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

我认为这是静态中间件的工作原理。