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