1
我希望将所有请求都重定向到位于Views文件夹中的index.ejs视图。在我routes.js文件,我已经添加了这一点:Express:使用ejs时未找到静态文件
module.exports = function (app) {
app.get('/', function(req, res) {
res.render('index', {title: "TODO"})
});
}
索引视图包含所有页面的标记,因为它会做个SPA,所以我会动态替换在客户端的看法。
的问题是,我引用位于公共文件夹中的脚本,他们都没有找到,我收到了404:
script src="public/app/app.js"></script>
我想这是因为快递不知道如何服务器上的文件。我指定,一切都在公共文件夹应该是静态文件:
app.use(express.static(config.root + '/public'))
现在,如果我不使用EJS模板,如果我使用一个index.html文件在公用文件夹,而不是一个视图,它工作正常。我只是要做到这一点,而不是:
app.get('*', function(req, res) {
res.sendfile('./public/index.html');
});
但我想利用EJS模板添加捆绑页面,而不是将脚本添加一个接一个。
那么我的代码有什么问题?我怎样才能解决404文件的JavaScript文件?
如果您在动态路由之后使用静态路由作为静态文件,您是否期望动态路由不匹配?不知道我明白了,但为什么如果一切都是静态的,你甚至还需要路线? – adeneo
只有JavaScript和其他资源(CSS,图像)是静态的。只有一条路径通向同一视图(index.ejs),因为它是单页应用程序。但是,当我将请求重定向到一个视图时,似乎不再找到静态资源。 – Sam
静态资源的路径是否正确?你只是在浏览器中得到404,或者你在节点控制台中有错误吗? – adeneo