«SyntaxError: Невозможно использовать оператор импорта вне модуля» с модулем npm - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь использовать модуль npm (https://github.com/AmyrAhmady/steamdb-js), но когда я использую пример кода, я получаю сообщение «SyntaxError: невозможно использовать оператор импорта вне модуля».

Это пример кода:

import { Game } from "steamdb-js";

async function main() {
  const game = new Game(271590);
  await game.fetchData();
  const data = await game.parse();
  //console.log(data); // This prints out all parsed data, you can use it for easier in-code usage
  console.log(game.getGameInfo());
}

main();

и это ошибка:

PS C:\Users\user\Desktop\Développement\TEST> node .\index.js
C:\Users\selim\Desktop\Développement\TEST\index.js:1
import { Game } from "steamdb-js";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:1116:16)
    at Module._compile (internal/modules/cjs/loader.js:1164:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
    at Module.load (internal/modules/cjs/loader.js:1049:32)
    at Function.Module._load (internal/modules/cjs/loader.js:937:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

Это моя ошибка или ошибка модуля npm?

Ответы [ 2 ]

0 голосов
/ 19 июля 2020

Прошло некоторое время с тех пор, как этот поток был создан, но я думаю, что я должен ответить, что когда дело доходит до библиотеки, которую я создал.

Прежде всего, example и steamdb- js code - это с использованием стандартов ES5 (таких как синтаксис import и export). Сначала вам необходимо включить их, вы можете использовать последние доступные версии Nodejs или использовать транспилятор; Если вы не используете Node + v13 или не знаете, как это сделать, вот моя рекомендация:

  • Установите https://www.npmjs.com/package/esm, используя npm i esm в рабочем пространстве вашего проекта.
  • Вместо node ./index.js используйте node -r esm ./index.js

Теперь все должно работать нормально, а steamdb-js должен иметь возможность "" "выполнить" ""

Я подчеркиваю execute, потому что теперь есть проблема, мы знаем, что steamdb использует CloudFlare, у них включен режим «Under Attack», и эту проблему можно обойти, но печальная часть связана с CloudFlare новые изменения, я сомневаюсь, что существующие библиотеки работают в данный момент, я обновлю свою библиотеку, как только найду способ.

Спасибо!

(Моя первая публикация в Stackoverflow! )

0 голосов
/ 18 июня 2020

Один из самых простых способов - просто добавить "type": "module" в ваш package.json файл. Более подробное описание можно найти в документации узла .

...