Node js: неожиданный токен '.' при попытке передать глобальную переменную в фигурных скобках - PullRequest
1 голос
/ 02 августа 2020

Я использую пакет got для получения страниц с веб-сайта.

Веб-сайт устанавливает нового повара сеанса ie для каждого запроса, поэтому, чтобы оставаться в системе, мне нужно чтобы использовать ie jar.

Вот пример того, как использовать ie 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});
})();

Однако в моем случае, потому что Cook ie сбрасывается после каждого запроса, и запросы могут быть сделаны в любое время из многих разных областей моего скрипта. Я определил свой cook ie jar как глобальную переменную, например: global.cookieJar = new CookieJar();.

Однако я не могу передать глобальную переменную функции got(). В документации Got показано, как передать файл cook ie jar функции got(), заключив его в фигурные скобки. Следовательно, я должен иметь возможность передавать переменную, например: await got('https://example.com', {global.cookieJar}). Но если переменная в фигурных скобках содержит . () javascript, выдает SyntaxError: Unexpected token '.' и не позволяет выполнить код.

Как я могу передать global.cookieJar в got() без синтаксической ошибки?

1 Ответ

2 голосов
/ 02 августа 2020

Синтаксис:

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

является сокращением для:

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

Есть две проблемы с:

{global.cookieJar}
  • Идентификатор не может иметь a . в нем (отсюда ваша синтаксическая ошибка)
  • Имя свойства, которое ищет функция, которую вы передаете объекту, - cookieJar, а не global.cookieJar.

Не используйте сокращение.

{cookieJar: global.cookieJar}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...