npm模块出现“ SyntaxError:无法在模块外部使用导入语句”

时间:2020-06-18 14:49:45

标签: node.js npm import

我正在尝试使用npm模块(https://github.com/AmyrAhmady/steamdb-js),但是当我使用示例代码时, 我收到“ SyntaxError:无法在模块外部使用import语句”。

这是示例代码:

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 :(得分:1)

自从创建此线程以来已有一段时间了,但是我认为有责任回答我所创建的库。

首先,示例和Steamdb-js代码正在使用ES5标准(例如importexport语法) 您需要首先启用这些功能,然后才能使用最新的可用Nodejs版本或使用编译器。如果您不使用Node + v13或不知道该怎么做,这是我的建议:

现在一切正常,steamdb-js应该可以“”“执行”“”

我要对execute施加压力,因为现在有一个问题,我们知道steamdb正在使用CloudFlare,他们启用了“ Under Attack”模式,这是可以忽略的问题,但可悲的是对于CloudFlare的新更改,我怀疑当前的库是否可以正常工作,我会尽快找到方法来更新我的库。

谢谢!

(我在Stackoverflow上的第一篇文章!)

答案 1 :(得分:0)

最简单的方法之一就是将"type": "module"添加到您的package.json文件中。 Node Documentation中有更深入的描述。