Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express:使用ejs时未找到静态文件_Node.js_Angularjs_Express_Ejs - Fatal编程技术网

Node.js Express:使用ejs时未找到静态文件

Node.js Express:使用ejs时未找到静态文件,node.js,angularjs,express,ejs,Node.js,Angularjs,Express,Ejs,我希望将所有请求重定向到位于“视图”文件夹中的index.ejs视图。在我的routes.js文件中,我添加了以下内容: module.exports = function (app) { app.get('/', function(req, res) { res.render('index', {title: "TODO"}) }); } 索引视图包含页面的所有标记,因为它将是SPA,所以我将在客户端动态交换视图 问题是我引用了位于公用文件夹中的脚本,但没有找到它们,我

我希望将所有请求重定向到位于“视图”文件夹中的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>
现在,如果我不使用ejs模板,并且如果我在公用文件夹中使用index.html文件而不是视图,它可以正常工作。我只需要这样做:

 app.get('*', function(req, res) {
    res.sendfile('./public/index.html');
 });
但我想利用ejs模板向页面添加包,而不是逐个添加脚本


那么我的代码有什么问题?如何解决javascript文件上的404问题

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


我认为这就是静态中间件的工作方式

如果在动态路由之后对静态文件使用静态路由,是否希望动态路由不匹配?我不确定我是否明白,但如果一切都是静态的,为什么还要使用路由呢?只有javascript和其他资源(css、图像)是静态的。同一视图(index.ejs)只有一个路由,因为它是一个单页应用程序。然而,当我将请求重定向到该视图时,似乎不再找到静态资源。静态资源的路径正确吗?浏览器中是否有404,或者节点控制台中是否有错误?chrome和节点控制台在resource/public/app/app.js上都显示404。然后路径不正确,或者文件不在那里,或者路径错误,或者静态中间件不工作,很难说。
 app.get('*', function(req, res) {
    res.sendfile('./public/index.html');
 });