在同一个项目中混合 CommonJS 和 ES6 模块

问题描述

我在 NodeJS 工作。我有很多遗留代码包括在很多地方使用的几个包。这段代码都是Commonjs,Node require()模块结构。

Node 现在支持 ES6。由于它是一个 Javascript 语言功能,我想迁移到它。

今天,我开始了一个小项目。我的小项目样板需要()几个我最喜欢的实用程序,然后说“Hello World”。我编辑它以导入所述实用程序。 Node 告诉我我需要将 "type":"module" 添加到我的 package.json 中,我做到了。

当我运行它时,我被告知“require is not defined”,这是我导入的实用程序模块之一。

我推断这意味着一个项目要么是 Commonjs 要么是 ES6,而且似乎永远不会相遇。我对此感到惊讶,因为这意味着我将永远在 NodeJS 中使用 ES6,因为我永远无法更改我需要的所有模块()。有些甚至不是我的,有些用于我什至不知道的项目(npm!)。

老实说,我很难相信这是真的。我不明白 ES6 如何成为广泛使用的标准,因为如果 ES^ 和 Commonjs 不能在应用程序中一起使用。我意识到 Webpack 等会预处理代码修改所有 require() 语句,但并不是每个人都使用这种实用程序。

我的问题是:

这个分析是否正确?

是否有一些解决方法可以让我同时使用两个模块系统(没有预处理器)?

我即将做出的永远、永远不使用 ES6 的决定是正确的吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...