首页 > 解决方案 > 节点 js:意外的令牌“。” 尝试在花括号中传递全局变量时

问题描述

我正在使用必须从网站获取页面的包。

该网站会为每个请求设置一个新的会话 cookie,因此为了保持登录状态,我需要使用 cookie jar。

下面是如何使用 got 文档中的 cookie jar 的示例:

const {promisify} = require('util');
const got = require('got');
const {CookieJar} = require('tough-cookie');

(async () => {
    const cookieJar = new CookieJar();
    const setCookie = promisify(cookieJar.setCookie.bind(cookieJar));

    await setCookie('foo=bar', 'https://example.com');
    await got('https://example.com', {cookieJar});
})();

然而,在我的情况下,因为 cookie 在每次请求后都会被重置,并且可以随时从脚本的许多不同区域发出请求,所以我将 cookie jar 定义为全局变量,如下所示global.cookieJar = new CookieJar();

但是,我发现自己无法将全局变量传递给got()函数。Got 的文档仅显示通过将 cookie jargot()放在大括号中来将其传递给函数。因此,我应该能够像这样传递变量:await got('https://example.com', {global.cookieJar}). 但是,如果大括号中的变量包含.(),则 javascript 会抛出一个SyntaxError: Unexpected token '.'并且不允许执行代码。

如何global.cookieJargot()不导致语法错误的情况下传递?

标签: javascript

解决方案


语法:

const foo = 1;
const object = { foo };

是以下的简写:

const foo = 1;
const object = { foo: foo };

有两个问题:

{global.cookieJar}
  • 标识符中不能有 a .(因此您的语法错误)
  • 您将对象传递给的函数正在寻找的属性名称是cookieJar,不是global.cookieJar

不要使用速记。

{cookieJar: global.cookieJar}

推荐阅读