【问题标题】:Fails to look up view in Express在 Express 中查找视图失败
【发布时间】:2015-09-10 15:06:45
【问题描述】:

这是我项目的结构。

应用程序
-控制器
index.server.controller.js
-模型
-路线
index.server.routes.js
- 意见
index.ejs
配置
-express.js

我在我的 express.js 文件中设置了视图目录:

app.set('views', '../app/views');
app.set('view engine', 'ejs');

这是在我的控制器文件中:

exports.render = function(req,res) {
res.render('index' ,  {
    title: 'welcome to this page'
})
};

每当我打开本地主机时,我都会得到

错误:无法在视图目录“../app/views/”中查找视图“索引”

【问题讨论】:

    标签: node.js model-view-controller express


    【解决方案1】:

    你给它一个错误的路径。试试这个

    app.set('views', __dirname + '/../app/views');
    

    【讨论】:

    • 它起作用了,但我仍然不明白这是一条错误的道路。我使用了路径: require('../app/routes/index.server.routes.js')(app);在同一个 express.js 文件中,它可以工作。
    • __dirname 将为您提供当前正在执行的文件的路径,在您的情况下为 express.js 。如果不设置 __dirname,您的计算机将不知道从哪里开始查找您的 app/views 文件夹。
    • 但是在 require('../app/routes/index.server.routes.js')(app); 的情况下它是如何工作的在同一个文件中。我以为..回到一个目录。
    • 因为当你使用 require('../app...) 时,你只是在文件级别玩,你可以使用这样的相对路径。但是当您执行app.set 时,您不能使用相对路径,因为现在您正在运行一个服务器,而服务器需要_-dirname 提供给您的绝对路径的位置。我知道这可能有点难以理解。
    • app.set('views', __dirname + '/views'); 更短的版本。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2019-08-30
    • 2021-08-15
    • 1970-01-01
    • 2012-04-30
    • 2015-11-03
    相关资源
    最近更新 更多