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 文檔中有更多內容。
添加回答
舉報