如何在 express.js 中的 res.render() 上使用点命名文件?
例如,

有一个名为 view.sample.ejs 的模板文件,我想渲染它

app.get('/sample', function(req, res){
    res.render('view.sample');
})

结果是,
Error: Cannot find module 'sample'

如何使用点?

(加)

我想按照 mvc 模型命名,比如
sample.model.js
sample.controller.js
sample.view.ejs
sample.view.update.ejs ...

js文件没问题,但渲染ejs文件我不能。

最佳答案

如果我们查看库 node_modules/express/lib/view.js ,我们发现模板路径的设计文件名中点之后的所有内容都应视为扩展名:

this.ext = extname(name); // 'view.sample' => '.sample'
this.name = name;         // 'view.sample' => 'view.sample'

而当我们尝试加载相应的文件扩展名引擎时会产生一个错误:
if (!opts.engines[this.ext]) { // '.sample' engine not found
  // try load engine and throw error
  opts.engines[this.ext] = require(this.ext.substr(1)).__express;
}

好的,怎么办?只需添加扩展名:
app.get('/sample', function(req, res){
  res.render('view.sample.ejs');
})

关于node.js - Express.js res.render 点名文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35822197/

10-12 12:57
查看更多