我试图更新ejs并将模块表达到最新版本,但通知仍然存在.我用google搜索,ofc,关于它的唯一主题是this,但它没有帮助.
有谁知道更多关于这个?
作为参考,这是完整的重要代码:
应用/视图/ index.ejs
<!DOCTYPE html> <html> <head> <title><%= title %></title> </head> <body> <h1><%= title %></h1> <img src="img/logo.jpg" alt="Hack Hands logo"> </body> </html>
应用程序/控制器/ index.server.controller.js
exports.render = function(req, res) { res.render('index', { title: 'MEAN MVC' }); };
应用程序/路由/ index.server.route.js
module.exports = function(app) { var index = require('../controllers/index.server.controller'); app.get('/', index.render); };
应用程序/配置/ express.js
var express = require('express'); module.exports = function() { var app = express(); app.set('views', './app/views'); app.set('view engine', 'ejs'); require('../app/routes/index.server.routes.js')(app); app.use(express.static('./public')); return app; };
server.js
var port = 1337; var express = require('./config/express'); var app = express(); app.listen(port); module.exports = app; console.log('Server running at http://localhost:' + port);tl; dr:升级到最新版本的EJS.它会删除有关选项和本地的所有警告.
我是谁
我是EJS v2的合作者(或上面@ micnic评论中的合作者).我只是在版本2.0.3(或类似的东西)发布后才开始维护EJS,所以我不太了解API的变化是如何发生的.
历史
Express.js使用的EJS v2的renderFile函数现在具有签名
function (path[, options[, locals]], cb)
但是为了与Express.js兼容,它将所有函数都称为
function (path, locals, cb)
将选项混合到locals对象中,EJS会自动选择带有option-y名称的locals,并将它们视为选项.
但由于Express.js签名也是EJS v1的函数签名,如果将本地文件中的任何选项复制到选项,我们也会打印警告,敦促开发人员使用新签名与本地和选项分开(实际上是me who added the warning).
但是,Express.js用户在调用约定方面没有选择权,因此警告始终存在于Express.js中.
一些用户确实抱怨:#34 #36.
起初,@ mde(谁是EJS的主要维护者)推了一个fix,它正确地禁用了Express.js和Express.js上的警告.
但是,#36中的人仍在抱怨,因为他正在使用filename
as the name of a local,当选项本地复制到选项时会打印一个警告.
最后,@ mde就像“f *** this shit”和removed all the deprecation warnings,包括一个毫无争议和合法的版本,并发布了版本2.2.4(合法警告在发布后的restored by me).
未来
@dougwilson(一位Express.js维护者)说他是interested,在Express.js v5中分离选项和本地人,就像在EJS v2中一样.我做志愿做出改变,但后来我很忙,所以是的.