[英]Is it possible to use both CommonJS and ES6 module in a Node.JS command-line program?
我正在開發一個 CLI 工具。 我使用 CommonJS 模塊“commander”來解析命令行 arguments。 我還想使用“p-map”來管理並發。 然而,“p-map”是一個 ES6 模塊。
另外我正在使用 Typescript。
現在代碼編輯器和 Typescript 編譯器都不會抱怨了。 但是我無法執行我的 CLI 工具。 如果我使用“module”:“commonjs”編譯,節點將不會加載 p-map 並抱怨“必須使用 import 加載 ES 模塊... node_modules/p-map/index.js ...require() of ES modules不支持。”。 如果我使用“module”:“es2015”編譯,使用“require”導入CommonJS模塊,並在我的package.json中添加“type”:“module”,節點會抱怨“ReferenceError:require is not defined”。
我喜歡 Typescript/Javascript 的靈活性,但是,是時候讓我懷念 Java。 Java 可能過於拘謹,但我不會花幾個小時來弄清楚導入/導出......
那么,是否可以在 Node.JS 命令行程序中同時使用 CommonJS 和 ES6 模塊?
為了增強兼容性,(較新的)節點 esm 加載器可以import
cjs-modules (例如import identifier from 'cjs-module-name';
)。
反過來不行,你不能require
esm 模塊,但如果真的有必要, 動態導入應該可以工作。
相關閱讀可能是p-map 所有者關於該主題的聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.