【发布时间】:2021-04-17 11:02:56
【问题描述】:
长话短说,我正在尝试在 CommonJS 模块中使用仅具有 ES6 模块入口点的 npm 包,即 bids-validator (GitHub),因为我的整个 50 多个模块应用程序都是在 CommonJS 中构建的。根据节点documentation,执行此操作的标准方法是使用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 模块中使用该包?
【问题讨论】:
-
旁注:
const validate = importValidator()只是将承诺分配给validate。 -
你使用的是什么版本的 Node.js?
-
关于承诺的好点。我将在异步函数中使用
validate,所以无论如何我都可以在那里进行导入。 -
我使用的是节点 14.16.0。
-
感谢您的测试,实际上我之前自己也尝试过并且遇到了同样的问题,尽管我不确定是不是只有我一个人。该包提供的 CLI 运行良好,通过 webpack 在浏览器中使用也是如此。让我想知道他们是否在 Node 应用程序中对其进行了测试。
标签: javascript node.js es6-modules commonjs