簡體   English   中英

是否可以在 Node.JS 命令行程序中同時使用 CommonJS 和 ES6 模塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM