我正在尝试使用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模块的故障?
答案 0 :(得分:1)
自从创建此线程以来已有一段时间了,但是我认为有责任回答我所创建的库。
首先,示例和Steamdb-js代码正在使用ES5标准(例如import
和export
语法)
您需要首先启用这些功能,然后才能使用最新的可用Nodejs版本或使用编译器。如果您不使用Node + v13或不知道该怎么做,这是我的建议:
npm i esm
安装https://www.npmjs.com/package/esm node ./index.js
代替使用node -r esm ./index.js
现在一切正常,steamdb-js
应该可以“”“执行”“”
我要对execute
施加压力,因为现在有一个问题,我们知道steamdb正在使用CloudFlare,他们启用了“ Under Attack”模式,这是可以忽略的问题,但可悲的是对于CloudFlare的新更改,我怀疑当前的库是否可以正常工作,我会尽快找到方法来更新我的库。
谢谢!
(我在Stackoverflow上的第一篇文章!)
答案 1 :(得分:0)
最简单的方法之一就是将"type": "module"
添加到您的package.json
文件中。 Node Documentation中有更深入的描述。