Express:使用ejs时找不到静态文件

时间:2014-01-30 15:37:04

标签: node.js angularjs express ejs

我希望将所有请求重定向到位于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问题?

1 个答案:

答案 0 :(得分:1)

知道了。脚本文件的路径不正确。它应该是app / app.js而不是public / app / app.js

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