提问者:小点点

在CommonJS节点应用程序中导入ES6模块?


长话短说,我试图在CommonJS模块中使用一个只有ES6模块入口点的npm包,即Bids-Validator(GitHub),因为我的整个50多个模块的应用程序都是在CommonJS中构建的。根据节点文档,这样做的标准方法是使用import()函数。我使用以下代码尝试了这种方法:

async function importValidator() {
  const { validate } = await import('bids-validator')
  return validate
}

const validate = importValidator()

但是,这会导致bids-validator包出错,而不一定是上面的导入函数:

error: unhandledRejection: Cannot use import statement outside a module
/*/app/api/node_modules/bids-validator/index.js:2
import validate from './validators'

有没有一种方法可以绕过这个问题,这样我就可以在CommonJS模块中使用这个包了?


共1个答案

匿名用户

检查package.json中选择了什么作为选项。确保选择类型:“common.js”而不是“module”