Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在同一项目中混合CommonJS和ES6模块_Javascript_Ecmascript 6_Module_Nodes_Commonjs - Fatal编程技术网

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

Javascript 在同一项目中混合CommonJS和ES6模块,javascript,ecmascript-6,module,nodes,commonjs,Javascript,Ecmascript 6,Module,Nodes,Commonjs,我在NodeJS工作。我有大量的遗留代码,包括在许多地方使用的几个包。这段代码都是CommonJS,Node require()模块结构 Node现在支持ES6。因为它是一种Javascript语言特性,所以我想迁移到它 今天,我开始了一个小项目。我的小项目样板需要几个我最喜欢的实用程序,然后说“你好,世界”。我编辑它以导入所述实用程序。Node告诉我需要在package.json中添加“type”:“module”,我做到了 当我运行它时,我被告知“require未定义”,这是指我导入的一个实

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

Node现在支持ES6。因为它是一种Javascript语言特性,所以我想迁移到它

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

当我运行它时,我被告知“require未定义”,这是指我导入的一个实用程序模块

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

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

我的问题是:

这个分析正确吗

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


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

不同的软件包应该能够使用不同的模块格式。看看