1 回答
TA贡献1802条经验 获得超5个赞
为什么 "type":"module" & require(...) 语法不能共存?
他们可以。在 ESM 模块(JavaScript import
/export
语法)中,您可以从 CJS 模块(较旧的 CommonJS 模块系统)导入。createRequire
如果您需要其他方式不可用的功能(如导入 JSON),您也可以使用。
如果我使用的包已经使用了 require() 语法,那么这是否意味着我的项目的其余部分不能使用 ecmascript 导出?
不,这仍然是可能的,尽管如果您完全转换为 ESM(或者根本不使用 ESM——例如,如果您避免同时使用两者),生活会简单得多。type
nearest中的设置package.json
决定了正在导入的内容是默认使用 ESM 还是 CJS。您可以(例如)有一个包含旧内容的目录,其中包含最小package.json
的内容,"type": "commonjs"
而您的项目的主要package.json
内容有"type": "module"
.
project_root/
+ package.json w/"type": "module"
+ foo.js - ESM module
+ bar.js - ESM module
+ legacy/
+ package.json w/"type": "commonjs"
+ baz.js - CJS module
或者,您可以在 main中有"type": "commonjs"
(或根本没有)并在 ESM 模块上使用文件扩展名。(我不喜欢它,但 Node.js 支持它。)type
package.json
.mjs
Node.js ESM 文档中有更多内容。
添加回答
举报