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

4

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
Illona answered 23/4, 2017 at 11:34 Comment(2)
are u using express framework?Humism
No just a client based angular appIllona
M
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.

Messick answered 7/6, 2019 at 4:23 Comment(2)
-o will open the specified document, not serve a_dir/index.html when a_dir is requested.Cleotildeclepe
we can try this command, as default port is 8080 http-server ./dist -o index.htmlSweven
M
1

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

http-server -c-1 -f /index.html
Monolithic answered 25/9, 2019 at 8:47 Comment(1)
Doesn't work in the latest version, nor is it documented.Cleotildeclepe
G
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.

Guardafui answered 19/10, 2022 at 15:44 Comment(0)
C
-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
Contention answered 23/4, 2017 at 12:5 Comment(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:8080Contention
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.Illona
Okay Got It :) Something similar here github.com/indexzero/http-server/issues/231Contention
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 installedIllona
github.com/indexzero/http-server/compare/… If you want you can try this fork. I think this contain some fix for the same issueContention
I saw the provided code, it basically adds the argument to the opener url. As per the code -o /index.html should work fine, however this doesn't seem to be the case. The url is checked based on typeof argv.o so I tried using command as `http-server -o '/index.html' ". But even this doesn't wrk. Strange!!!Illona

© 2022 - 2024 — McMap. All rights reserved.