我升级了节点并构建了现有文件。
但是它没有构建,并且有一个错误。
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: │
│ ~~/nuxt.config.js │
│ require() of ES modules is not supported. │
│ require() of ~~/nuxt.config.js from │
│ ~~/config.js is an ES │
│ module file as it is a .js file whose nearest parent package.json contains "type": │
│ "module" which defines all .js files in that package scope as ES modules. │
│ Instead rename nuxt.config.js to end in .cjs, change the requiring code to use │
│ import(), or remove "type": "module" from │
│ ~~/package.json.
所以我删除了package.json文件中的‘类型:模块’。
可以去掉它吗?
发布于 2020-06-24 20:20:15
当package.json
文件中有'type': 'module'
时,源代码应该使用import
语法。如果没有,则应使用require
语法。
将'type': 'module'
添加到package.json
可启用ES 6模块。有关更多信息,请参阅here。
发布于 2021-07-28 18:20:40
截至2021年年中更新
如果您正在使用Node.js v14,既然是LTS,那么您应该这样做,您只需要使用type: module
,如下所示:https://blog.logrocket.com/es-modules-in-node-today/
如果由于某些原因,你仍然坚持使用较低版本的Node.js,你可以关注来自https://flaviocopes.com/how-to-enable-es-modules-nodejs/的这篇博客文章
并执行以下操作:
启动应用程序时,
package.json
--experimental-modules
中添加"type": "module"
,例如:node --experimental-modules app.js
或者你也可以这样做:
在您的文件中添加带有扩展名的
"type": "module"
,最终结果将如下所示:.mjs
扩展名,最终结果将如下所示发布于 2021-01-05 05:21:14
@AfsharMohebi的答案非常好,涵盖了最有用的点。
这个答案是在CI/CD管道周围添加一些颜色,其中可能需要使用添加动态type
参数来执行用ES6 JavaScript编写的带有节点的代码。此外,我意识到这与OP的问题无关,但Google把我带到了这里,所以希望其他人能找到有用的东西。
特别是,如果我们没有包含--input-type=module
的package.json
,我们可能会根据node docs使用type: module
。
例如,我使用下面的命令来测试一个npm包上传成功并且可以使用:
mkdir test-mypkg && cd test-mypkg
echo "import { myFunc } from '@myname/myPkg';" > test.js
npm i @myname/myPkg @babel/core @babel/node && cat test.js | node --input-type=module
注意:
babel
依赖项包含在完整的ES6到ES5转换中,并且可能是必需的,也可能不是必需的。此外,您可能应该固定您正在测试的包myPkg
的版本!
https://stackoverflow.com/questions/61401475
复制相似问题