我已在全局范围内安装了http-server
。
我从本地主机端口8080上的myDir启动它。在myDir中,我有index.html
。
如果我请求(从浏览器)http://localhost:8080/
,我会得到index.html,这是可以的。
如果我通过http://localhost:8080/anything
请求,我不会从服务器得到任何响应。
相反,我希望我的服务器总是用index.html响应任何到达端口8080上的localhost的http请求。
有这个可能。
先谢了
7条答案
按热度按时间klsxnrf11#
按照文档中的规定使用。
请注意代理URL末尾的
?
。slwdgvem2#
为了达到您的要求,我建议您使用live-server而不是http-server。
live-server也提供了一个热重新加载,但这不是你的要求之一
编辑:live-server不是设计用于生产的,例如没有gzip压缩
编辑2:http-server的维护者在这篇评论中明确表示,http-server永远不会考虑SPA用例
编辑3:serve似乎也是一个不错的选择
ccrfmcuu3#
使用Express 4.x的简单明了的示例:
如果没有找到请求的文件,这个实现将总是使用
index.html
进行响应,它几乎和使用http-server
一样简单,后者没有这个选项。xggvc2p64#
是的,有
-P
/--proxy
选项:请注意,any 错误(包括404)将重定向到您的索引,而不仅仅是缺少路径。
7tofc5zh5#
有时候,对于像这样的特定情况,编写自己的服务器很容易:
但是请记住,如果每个路径都返回
index.html
,那么在index.html
中,您就不能引用图像、样式表或客户端JavaScript文件等任何内容。不仅是上面显示的代码,而且任何对每个请求发送相同响应(index.html
)的解决方案都是如此。您可能需要进行一些例外处理,而使用Express并不难:
请记住,异常必须转到顶部,因为第一个匹配的路由将用于给定的请求。
当然,您需要保存此代码,例如保存到
app.js
,安装Express:并以以下内容开始:
这比使用现成的解决方案要复杂得多(虽然,正如您所看到的,也没有那么复杂),但是您可以更灵活地选择它的行为方式。
q3qa4bjr6#
有点战后,但无论如何.对于有Angular 的应用程序,我建议添加到您的包.json:
那就叫
mmvthczy7#
我在尝试为生产构建一个苗条的应用程序时遇到了这个问题。我没有使用
http-server
,而是使用sirv
:先安装它
npm i --save-dev sirv-cli
然后在package.json上添加以下脚本:
"start": "sirv public --single",
快乐编码!