You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中用Pug读取JSON时嵌套属性访问报错问题

解决Pug模板无法访问嵌套JSON属性的问题

排查步骤与解决方案

1. 先确认Node.js端的settings解析结果

在res.render前添加打印代码,检查req.session.settings的类型和解析后的值(查看Node.js终端输出,不是浏览器控制台):

console.log("session settings类型:", typeof req.session.settings);
console.log("session settings原始值:", req.session.settings);

const parsedSettings = JSON.parse(req.session.settings);
console.log("解析后类型:", typeof parsedSettings);
console.log("解析后值:", parsedSettings);

res.render("memberships", {
   title: "DashRoc - Membresías",
   settings: parsedSettings
});
  • 如果解析后类型是object,且解析后值包含完整的memberships对象,说明问题出在Pug模板端;
  • 如果解析后类型是string,说明req.session.settings是双重序列化的JSON字符串,需要再解析一次:
    const settings = JSON.parse(JSON.parse(req.session.settings));
    

2. 验证Pug模板中的变量类型

在Pug模板的服务器端逻辑中添加打印(输出到Node.js终端):

- console.log("模板中settings类型:", typeof settings);
- console.log("模板中settings值:", settings);
- console.log("模板中memberships值:", settings.memberships);
  • 若settings是字符串,回到第一步调整解析逻辑;
  • 若settings是对象但memberships为undefined,检查原始JSON的键名拼写(比如大小写、是否有笔误)。

3. 修正Pug模板的判断逻辑

确保判断代码位置正确,且添加前置判断避免属性不存在时报错:

if settings.memberships && settings.memberships.view
  p 会员视图已启用
else
  p 会员视图未启用

内容的提问来源于stack exchange,提问作者Francisco Castillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:33:15