【发布时间】:2018-03-23 08:55:47
【问题描述】:
这是我的项目文件夹
/
public/
index.html
main.js
adaptor.js
main.css
node_modules/
socket.io/
index.js
这是我 index.js 中的静态文件配置
app.use(express.static(path.join(__dirname, '/public')));
app.use(express.static(path.join(__dirname, '/node_modules')));
app.get('/', (req, res)=>{
res.sendFile(path.join(__dirname, 'public', '/index.html'));
})
这是我的 index.html
<script src="/socket.io/socket.io.js" charset="utf-8"></script>
<script src="/adapter.js" charset="utf-8"></script>
<script src="/main.js" charset="utf-8"></script>
这是我的 nginx 配置
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.html =404;
proxy_pass http://localhost:8080;
}
但我在所有脚本上都得到 404。另一个奇怪的事情是这些文件上的 mime-type 设置为text/HTML
我在这里做错了什么?
我有一个项目,具有相同的项目结构,并且具有相同的配置,但它适用于它,但在这种情况下它不起作用。
【问题讨论】:
-
是的
__dirname是/home/ubuntu和 nginxroot设置为/home/ubuntu -
你能用 /public/myfile 访问静态文件吗?此外,Nginx 不需要尝试提供 index.html —— 你的节点应用程序正在处理这个问题。
-
当我记得你正在传递代理时,我删除了关于 Nginx
root的评论——Nginx 根本不应该尝试提供任何文件。您可以从配置中删除try_files和root。 -
区分问题出在 Express 还是 nginx 会很有用。如果直接向 Express 服务器发出请求,是否可以访问脚本文件?