How to run html file using node js
Solution 1:
You can use built-in nodejs web server.
Add file server.js
for example and put following code:
var http = require('http');
var fs = require('fs');
const PORT=8080;
fs.readFile('./index.html', function (err, html) {
if (err) throw err;
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(PORT);
});
And after start server from console with command node server.js
. Your index.html page will be available on URL http://localhost:8080
Solution 2:
Just install http-server globally
npm install -g http-server
where ever you need to run a html file run the command http-server
For ex: your html file is in /home/project/index.html
you can do /home/project/$ http-server
That will give you a link to accessyour webpages:
http-server
Starting up http-server, serving ./
Available on:
http://127.0.0.1:8080
http://192.168.0.106:8080
Solution 3:
I too faced such scenario where I had to run a web app in nodejs with index.html being the entry point. Here is what I did:
- run
node init
in root of app (this will create a package.json file) - install express in root of app :
npm install --save express
(save will update package.json with express dependency) - create a public folder in root of your app and put your entry point file (index.html) and all its dependent files (this is just for simplification, in large application this might not be a good approach).
- Create a server.js file in root of app where in we will use express module of node which will serve the public folder from its current directory.
-
server.js
var express = require('express'); var app = express(); app.use(express.static(__dirname + '/public')); //__dir and not _dir var port = 8000; // you can use any port app.listen(port); console.log('server on' + port);
do
node server
: it should output "server on 8000"start http://localhost:8000/ : your index.html will be called
File Structure would be something similar
Solution 4:
Move your HTML file in a folder "www". Create a file "server.js" with code :
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/www'));
app.listen('3000');
console.log('working on 3000');
After creation of file, run the command "node server.js"