如果不使用ES6语法,则无法导入Chessjs

a0zr77ik  于 2022-09-21  发布在  Node.js
关注(0)|答案(2)|浏览(138)

在所有的chessjs文档中,都使用了const chess = require('chess');

但是,当我尝试使用此语法时,我收到以下错误:

const Chess = require('chess');
              ^

Error [ERR_REQUIRE_ESM]: require() of ES Module is not supported.
Instead change the require of main.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> {
  code: 'ERR_REQUIRE_ESM'
}

有没有解决这个问题的办法?

e1xvtsh3

e1xvtsh31#

dynamic import()如下所示

async function loader(){
  const Chess = await import('chess')
  // things with Chess
}

正如Evert提到的,这也可以涵盖ES模块中的条件导入

f87krz0w

f87krz0w2#

虽然这不是一般问题的解决方案(这就是为什么我没有将其标记为解决方案),但我最终只是从不允许通用请求的模块chess迁移到允许两者都允许的模块chess.js

新代码:

const { Chess }= require('chess.js');

相关问题