Mat*_*ood 27 javascript import node.js es6-modules
来自https://2ality.com/2019/04/nodejs-esm-impl.html Node 12 应该支持 es6 模块;但是,我只是不断收到错误消息:
问题:如何在节点 12 中使用 es6 模块制作 MVP?
包.json
{
"name": "dynamic-es6-mod",
"version": "1.0.0",
"description": "",
"main": "src/index.mjs",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node src/index.mjs"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"globby": "^10.0.1"
}
}
Run Code Online (Sandbox Code Playgroud)
$ node -v
$ 12.6.0
$ npm run start
internal/modules/cjs/loader.js:821
throw new ERR_REQUIRE_ESM(filename);
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /Users/dev/dynamic-es6-mod/src/index.mjs
at Object.Module._extensions..mjs (internal/modules/cjs/loader.js:821:9)
at Module.load (internal/modules/cjs/loader.js:643:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:839:10)
at internal/main/run_main_module.js:17:11
Run Code Online (Sandbox Code Playgroud)
小智 26
该模块的官方文档指出,v2 应该与 require() 一起使用。
不过有一个解决办法。相反,它可以异步加载:
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));
Run Code Online (Sandbox Code Playgroud)
abd*_*laa 22
您所要做的就是添加支持新 es6 导入/导出语句的--experimental-modules标志,顺序也很重要,如下所示。
"start": "node --experimental-modules src/index.mjs "
Run Code Online (Sandbox Code Playgroud)
在Node 14 中,我通过变通方法解决了它。
解决方法来源:https : //github.com/eslint/eslint/issues/12319#issuecomment-535799024
简短的摘要:
package.json不支持 ESMsrc目录中地方package.json与{ "type": "module" }PS:ESLint 团队现在不能轻易解决,只是因为核心设计...... :(
| 归档时间: |
|
| 查看次数: |
48684 次 |
| 最近记录: |