我目前正在重写一个NodeJS项目,从一个混乱的CommonJS和Babel移植的ES模块的组合,以完全基于ES模块。
在这个过程中,我对Node处理这些事情的方式感到有点困惑,我试着去阅读它,但我似乎错过了我理解中的最后一部分。
我假设我将不再需要使用Babel来移植ES模块。这似乎是正确的。但是,当我运行我的(Jest)测试时,我仍然需要使用--experimental-vm-modules节点标志来使一切正常工作。
我的问题是:这个标志是做什么的?阅读文档,它似乎启用了ES模块,但我不是已经通过指定“type”启用了ES模块吗:“模块”的名称?
相关链接:
- https://nodejs.org/api/esm.html#enabling
- https://nodejs.org/api/cli.html#--experimental-vm-modules
- https://jestjs.io/docs/ecmascript-modules
1条答案
按热度按时间4nkexdtk1#
指定类型:json中的“module”只是告诉库作者您的源代码基于ESM。
对于jest,您需要使用experimental-vm-modules,因为jest用于启用ESM支持的节点api在节点18.x中仍然不稳定
https://jestjs.io/docs/ecmascript-modules