Saurabh Tiwari
Saurabh Tiwari

Reputation: 5161

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

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

Upvotes: 13

Views: 38376

Answers (5)

papagei9
papagei9

Reputation: 41

If you're using the http-server package from npmjs, there is a way to have a catch-all redirect to itself again for SPAs like Angular: https://www.npmjs.com/package/http-server#catch-all-redirect

Upvotes: 0

Irfandy J.
Irfandy J.

Reputation: 1464

For me what solved the problem was, I clicked the link through the CLI after doing http-server [path].

In my case I ran http-server . (which has an index.html in the directory), then logs out this.

Starting up http-server, serving .

http-server version: 14.1.1

http-server settings:
CORS: disabled
Cache: 3600 seconds
Connection Timeout: 120 seconds
Directory Listings: visible
AutoIndex: visible
Serve GZIP Files: false
Serve Brotli Files: false
Default File Extension: none

Available on:
  http://192.168.8.133:8080
  http://127.0.0.1:8080
  http://172.23.128.1:8080
Hit CTRL-C to stop the server

Now I just used the link in the line below Available on: which is:

  1. http://192.168.8.133:8080, works for me
  2. http://127.0.0.1:8080, did not work for me, it download file instead
  3. http://172.23.128.1:8080, works!

Such a weird behaviour of http-server.

Upvotes: 0

PPB
PPB

Reputation: 3087

Try to put you static file inside a new directory public. and run you server http-server

- app.js
-public
--index.html
-package.json

Upvotes: -1

Chigo Kawa
Chigo Kawa

Reputation: 137

Add a -f /index.html or whatever the document is. In my case for example:

http-server -c-1 -f /index.html

Upvotes: 1

Elliott
Elliott

Reputation: 335

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.

Upvotes: 7

Related Questions