首页 > 解决方案 > Express app.locals 在使用 res.send 发送时返回 undefined

问题描述

我通过 app.locals 将 lodash 暴露给每个模板

app.locals._ = _;

当我像这样发送模板时,初始请求一切正常

res.render(template)

但是当我只想更新页面的一部分并尝试像这样发送模板时

res.send(pug.renderFile(template))

lodash 返回未定义

我该如何解决这个问题?

提前致谢。

标签: node.jsexpresspug

解决方案


res.render不仅仅是pug.renderFile的别名,它处理 app.locals 和其他一些位的注入。如果你想手动进行一些 pug 渲染,那么你需要手动注入 app.locals,但是 pug 会处理它。

在这种情况下, pug.renderFile 应该接受用作本地对象的第二个参数,因此如果您执行类似的操作res.send(pug.renderFile(template, app.locals));,您应该能够根据需要手动将本地参数注入 pug 模板。

编辑:正如 Asaf Aviv 在评论中指出的那样,app.locals 会自动分配给每个请求对象,因此您也可以从req.app.locals.


推荐阅读