【问题标题】:Syntax Error passing a variable from index.js in node.js从 node.js 中的 index.js 传递变量的语法错误
【发布时间】:2021-06-30 21:45:00
【问题描述】:

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

index.js 代码 sn-p 是:

app.get('/map', (req,res) => {
    res.render('map', {
        user: req.user,
        authenticated: req.isAuthenticated()
    });
});

map.pug sn-p 是:

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 来解决这个问题,但它不适用于语法错误,所以我对如何解决这个问题有点困惑。

【问题讨论】:

    标签: javascript node.js pug web-deployment


    【解决方案1】:

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

    app.get('/map', (req, res) => {
        res.render('map', {
            authenticated: req.isAuthenticated(),
            user: req.user !== undefined ? req.user : {},
        })
    });
    

    当用户未定义时,上面会将用户设置为空对象

    【讨论】:

    • 谢谢,效果很好。我曾尝试通过更改 req.user 值来做一些类似的事情,但我尝试的实现导致用户身份验证出现问题。
    猜你喜欢
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2015-09-20
    相关资源
    最近更新 更多