当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 在ejs中的locals对象中找到的选项

来源:互联网 收集:自由互联 发布时间:2021-06-16
从 GitHub运行项目时出现以下错误:“locals对象中找到的选项.选项被复制到选项对象.此行为已弃用,将在EJS 3中删除” 我试图更新ejs并将模块表达到最新版本,但通知仍然存在.我用google搜
从 GitHub运行项目时出现以下错误:“locals对象中找到的选项.选项被复制到选项对象.此行为已弃用,将在EJS 3中删除”

我试图更新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中一样.我做志愿做出改变,但后来我很忙,所以是的.

网友评论