13

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
2
  • are u using express framework?
    – undefined
    Commented Apr 23, 2017 at 11:57
  • No just a client based angular app Commented Apr 23, 2017 at 12:06

4 Answers 4

7

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.

2
  • 2
    -o will open the specified document, not serve a_dir/index.html when a_dir is requested. Commented Oct 18, 2019 at 13:21
  • we can try this command, as default port is 8080 http-server ./dist -o index.html Commented Jun 25, 2021 at 17:05
1

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

http-server -c-1 -f /index.html
1
  • Doesn't work in the latest version, nor is it documented. Commented Oct 18, 2019 at 13:21
0

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.

-1

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

- app.js
-public
--index.html
-package.json
6
  • Did you restarted your server ? It will server default index.html file inside public dir and should work on both URL localhost:8080/index.html or localhost:8080
    – PPB
    Commented Apr 23, 2017 at 12:14
  • Yes I restarted my server. I hope you understand my question, I can get my application to work on localhost:8080/index.html by manually entering this url. What I want is it should itself open the browser at this url. Commented Apr 23, 2017 at 12:17
  • Okay Got It :) Something similar here github.com/indexzero/http-server/issues/231
    – PPB
    Commented Apr 23, 2017 at 12:54
  • This thread seems to address the same concern as I have, but if I try to use -o localhost:8080/index.html I get a error from Windows saying The associated program is not installed Commented Apr 23, 2017 at 13:08
  • github.com/indexzero/http-server/compare/… If you want you can try this fork. I think this contain some fix for the same issue
    – PPB
    Commented Apr 23, 2017 at 13:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.