node.js - Express app.locals 在使用 res.send 发送时返回 undefined
问题描述
我通过 app.locals 将 lodash 暴露给每个模板
app.locals._ = _;
当我像这样发送模板时,初始请求一切正常
res.render(template)
但是当我只想更新页面的一部分并尝试像这样发送模板时
res.send(pug.renderFile(template))
lodash 返回未定义
我该如何解决这个问题?
提前致谢。
解决方案
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
.
推荐阅读
- java - 找不到参数的方法 applicationId()?
- javascript - 如何检查特定元素的 DOM 并创建新的 Vue 实例?
- python-3.x - 使用 strptime 将字符串转换为日期时间对象的问题
- .net - 从设备门户将 appxbundle 部署到 hololens 时出错
- php - Laravel/PHP 命名空间路径的简写
- django - 处理子进程文件输出
- wso2 - 无法从 wso2am-2.5.0 访问 wso2is-5.6.0 中的 XACML 策略出现错误
- php - 为什么 add_post_meta 会创建一个嵌套数组?
- keras - 标记器没有属性 oov_token
- asp.net-core - Asp.Net Core Razor 页面中的远程验证