首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么package.json文件中有'type: module‘?

为什么package.json文件中有'type: module‘?
EN

Stack Overflow用户
提问于 2020-04-24 13:01:59
回答 4查看 67.8K关注 0票数 48

我升级了节点并构建了现有文件。

但是它没有构建,并且有一个错误。

代码语言:javascript
运行
复制
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文件中的‘类型:模块’。

可以去掉它吗?

EN

回答 4

Stack Overflow用户

发布于 2020-06-24 20:20:15

package.json文件中有'type': 'module'时,源代码应该使用import语法。如果没有,则应使用require语法。

'type': 'module'添加到package.json可启用ES 6模块。有关更多信息,请参阅here

票数 66
EN

Stack Overflow用户

发布于 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
  • use --experimental-modules中添加"type": "module",例如:node --experimental-modules app.js

或者你也可以这样做:

在您的文件中添加带有扩展名的

  • "type": "module",最终结果将如下所示:
    • 在您的文件中添加.mjs扩展名,最终结果将如下所示
票数 6
EN

Stack Overflow用户

发布于 2021-01-05 05:21:14

@AfsharMohebi的答案非常好,涵盖了最有用的点。

这个答案是在CI/CD管道周围添加一些颜色,其中可能需要使用添加动态type参数来执行用ES6 JavaScript编写的带有节点的代码。此外,我意识到这与OP的问题无关,但Google把我带到了这里,所以希望其他人能找到有用的东西。

特别是,如果我们没有包含--input-type=modulepackage.json,我们可能会根据node docs使用type: module

例如,我使用下面的命令来测试一个npm包上传成功并且可以使用:

代码语言:javascript
运行
复制
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的版本!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61401475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档