首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从index.js在node.js中传递变量时语法错误

从index.js在node.js中传递变量时语法错误
EN

Stack Overflow用户
提问于 2021-06-30 13:02:16
回答 1查看 73关注 0票数 0

我正在开发一个网站,它使用node.js和pug作为模板引擎。我试图将一个变量从index.js传递给我的map.pug文件,特别是一个用户参数,当用户登录到站点时,该参数包含Google登录信息。

index.js代码片段是:

代码语言:javascript
运行
复制
app.get('/map', (req,res) => {
    res.render('map', {
        user: req.user,
        authenticated: req.isAuthenticated()
    });
});

map.pug片段是:

代码语言:javascript
运行
复制
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.userundefined,因此不会将任何内容传递给user

这将导致以下语法错误:

Uncaught SyntaxError: Unexpected token ';'

即使JSON.stringify语句在if语句中?我尝试过使用try...catch来修复这个问题,但是它不适用于语法错误,所以我在如何修复这个问题上遇到了一些困难。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-30 13:45:00

正如您所提到的,这个问题是由于用户变量在没有经过身份验证时没有被设置。(这会导致页面上呈现的脚本具有user =;这是语法错误)。如果在快捷呈现函数中未定义req.user,则可以通过设置默认值来解决此问题。

代码语言:javascript
运行
复制
app.get('/map', (req, res) => {
    res.render('map', {
        authenticated: req.isAuthenticated(),
        user: req.user !== undefined ? req.user : {},
    })
});

当一个空对象未定义时,上面的内容会将用户设置为空对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68195314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档