Express:使用ejs时找不到静态文件
我想我所有的请求被redirect到位于Views文件夹中的index.ejs视图。 在我的routes.js文件中,我添加了这个:
module.exports = function (app) { app.get('/', function(req, res) { res.render('index', {title: "TODO"}) }); }
索引视图包含所有页面的标记,因为它将是一个SPA,所以我将在客户端dynamic交换视图。
问题是,我引用脚本位于公用文件夹中,他们没有find,我得到一个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模板来添加bundle到页面,而不是逐个添加脚本。
那么我的代码有什么问题? 我怎样才能解决404文件的JavaScript文件?
得到它了。 脚本文件的path不正确。 它应该是app / app.js而不是public / app / app.js
我认为这是静态中间件的工作原理。