我希望将所有请求重定向到位于 Views 文件夹中的 index.ejs View 。在我的routes.js 文件中,我添加了以下内容:
module.exports = function (app) {
app.get('/', function(req, res) {
res.render('index', {title: "TODO"})
});
}
索引 View 包含页面的所有标记,因为它将是 SPA,因此我将在客户端动态交换 View 。
问题是我引用了位于公共(public)文件夹中的脚本,但找不到它们,我得到了 404 :
script src="public/app/app.js"></script>
我认为这是因为 Express 不知道如何服务器该文件。我已指定公共(public)文件夹中的所有内容都应该是静态文件:
app.use(express.static(config.root + '/public'))
现在,如果我不使用 ejs 模板,并且使用公共(public)文件夹中的 index.html 文件而不是 View ,则它可以正常工作。我只需要这样做:
app.get('*', function(req, res) {
res.sendfile('./public/index.html');
});
但我想利用 ejs 模板将 bundle 添加到页面,而不是逐个添加脚本。
那么我的代码有什么问题吗?如何解决 javascript 文件上的 404 问题?
最佳答案
明白了。脚本文件的路径不正确。它应该是 app/app.js 而不是 public/app/app.js
我认为这就是静态中间件的工作原理。
关于node.js - Express:使用ejs时找不到静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460785/