Nodejs: Error: Cannot find module 'html'

Use render only when using a rendering engines like jade or ejs. If you want to use plain HTML, place it in the public folder or serve it as a static file.

res.sendFile('index2.html', {root : __dirname + '/views'});

You need to specify your view folder and parse the engine to HTML.

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/public/views');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json());



app.get('*', function(req, res){
    res.render('index.html');
});

app.listen(app.get('port'), function() {
});

First of all you need to install ejs engine. For that you can use the following code

npm install ejs

After that you need to add app engine and set the view directory.

The changed code is given below,

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.urlencoded({ extended: true }));

app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/public');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

app.listen(app.get('port'), function() {
});