node.js - Express:使用ejs时找不到静态文件

标签 node.js angularjs express ejs

我希望将所有请求重定向到位于 Views 文件夹中的 index.ejs View 。在我的routes.js 文件中,我添加了以下内容:

  module.exports = function (app) {

  app.get('/', function(req, res) {
     res.render('index', {title: "TODO"})
 });
}

索引 View 包含页面的所有标记,因为它将是 SPA,因此我将在客户端动态交换 View 。

问题是我引用了位于公共(public)文件夹中的脚本,但找不到它们,我得到了 404 :

script src="public/app/app.js"></script>

我认为这是因为 Express 不知道如何服务器该文件。我已指定公共(public)文件夹中的所有内容都应该是静态文件:

   app.use(express.static(config.root + '/public'))  

现在,如果我不使用 ejs 模板,并且使用公共(public)文件夹中的 index.html 文件而不是 View ,则它可以正常工作。我只需要这样做:

 app.get('*', function(req, res) {
    res.sendfile('./public/index.html');
 });

但我想利用 ejs 模板将 bundle 添加到页面,而不是逐个添加脚本。

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

最佳答案

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

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

关于node.js - Express:使用ejs时找不到静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460785/

相关文章:

javascript - 使用 AngularJs 和 ES6 类 : 'this' is not available in ng-click

javascript - AngularJS:获取后缀为 rd、th 和 st 的日期

javascript - 构建 MongoClient 和表达 : Client inside routes or routes inside client? 的最佳方式是什么

javascript - 在 NestJs 中什么时候使用守卫什么时候使用中间件

node.js - 无法找到模块 - 使用 esm nodejs 应用程序开玩笑

python - Opencv错误初始化完成

javascript - 通过 Nodejs 进行多个 API 连接

javascript - 简单的 Web 服务器示例 - 为什么我必须将属性名称放在引号中?

mysql - 如何更改此处复选框的状态?

angularjs - 为什么 Yeoman AngularFire 生成器从一开始就无法工作?