How do I serve index.html by default in my http-server

Saurabh Tiwari picture Saurabh Tiwari · Apr 23, 2017 · Viewed 13.7k times · Source

I have created a basic AngularJS app in node environment. I am using http-server module for serving the files to browser. Everything is working fine except for the fact that I can't get to serve index.html by default when the server launches.

I checked out npm registry for more options to http server module, and also tried looking for a relevant question on SO but still not able to get what I desire.

Is it possible at all to specify the file to pick up while server starts.

My server basically starts at localhost:8080 while I would like localhost:8080/index.html

My start script is http-server -a localhost -p 8080 -c-1. If I do something like http-server -a localhost -p 8080 -c-1 index.html, to my surprise it opens the index.html file but serves it on file protocol and not on localhost.

What am I doing wrong here.

P.S. I visited Angular JS seed and there official example says http-server -a localhost -p 8080 -c-1 ./app. However, when I do this I get error Windows can't find specified path, although my structure is similar to the seed.

My structure:

dir
   --app.js
   --index.html
   --node_modules
   --package.json

Answer

Elliott picture Elliott · Jun 7, 2019

Make sure you are building your project first and generating an output ./dist folder or similar.

Then try this command instead:

http-server -p 8080 ./dist -o http://localhost:8080/index.html

You are missing the http:// in your url.