Node.js v12.16.1配置type:module后仍需--experimental-modules问题
问题解答
这是因为在Node.js v12.x版本中,ES模块(ESM)仍然处于实验性阶段,即使你在package.json中设置了"type": "module",也必须通过--experimental-modules标志来启用ESM支持——这是v12版本的设计要求,并不是你遗漏了什么配置。
具体细节:
- Node.js从v10开始引入ESM支持,但一直到v14.13.0(以及v12.20.0,不过v12.x属于旧LTS分支,后续更新非常有限)才正式将ESM移出实验性状态。
- 在v12.x中,
"type": "module"的作用是告诉Node.js把.js文件当作ES模块解析,但启用ESM这个特性本身,仍然需要显式添加实验性标志来触发。
解决方式:
你可以通过以下命令正常启动服务:
node --experimental-modules server.js
如果想要摆脱这个强制标志,有两个可行方向:
- 升级到Node.js v14.13.0或更高版本(更推荐,因为v12已经停止官方维护),此时只保留
package.json中的"type": "module",直接运行node server.js即可生效。 - 继续使用v12.x版本,每次启动时坚持添加
--experimental-modules标志。
内容的提问来源于stack exchange,提问作者Alexander Fradiani
相关产品推荐
相关产品推荐

