我正在开发一个网站,它使用node.js
和pug作为模板引擎。我试图将一个变量从index.js
传递给我的map.pug
文件,特别是一个用户参数,当用户登录到站点时,该参数包含Google登录信息。
index.js
代码片段是:
app.get('/map', (req,res) => {
res.render('map', {
user: req.user,
authenticated: req.isAuthenticated()
});
});
map.pug
片段是:
var user
// Find out if the user is logged in & assign to "user" variable if so
if (!{JSON.stringify(authenticated)} == true) {
user = !{JSON.stringify(user)};
} else {
user = 'undefined';
};
console.log(user);
当用户在将字典传递到user
变量时登录时,这很好。当用户未登录时,req.user
是undefined
,因此不会将任何内容传递给user
。
这将导致以下语法错误:
Uncaught SyntaxError: Unexpected token ';'
即使JSON.stringify语句在if语句中?我尝试过使用try...catch来修复这个问题,但是它不适用于语法错误,所以我在如何修复这个问题上遇到了一些困难。
发布于 2021-06-30 05:45:00
正如您所提到的,这个问题是由于用户变量在没有经过身份验证时没有被设置。(这会导致页面上呈现的脚本具有user =;这是语法错误)。如果在快捷呈现函数中未定义req.user,则可以通过设置默认值来解决此问题。
app.get('/map', (req, res) => {
res.render('map', {
authenticated: req.isAuthenticated(),
user: req.user !== undefined ? req.user : {},
})
});
当一个空对象未定义时,上面的内容会将用户设置为空对象。
https://stackoverflow.com/questions/68195314
复制相似问题