Node.js 当项目使用CommonJS模块时,将react应用程序导入模块创建为ES6模块

Node.js 当项目使用CommonJS模块时,将react应用程序导入模块创建为ES6模块,node.js,create-react-app,commonjs,Node.js,Create React App,Commonjs,我正在尝试使用CommonJS模块格式和CreateReact应用程序(CRA)。CRA的文件说明: …Create React应用程序可以使用CommonJS和ES模块。对于Node.js 兼容性,建议主要入口点是CommonJS 我发现,当我导入一个提供ES6模块格式的模块(通过“package.json”中的“module”属性)时,CRA将其用作模块的入口点 因此,即使我的项目完全使用CJS,它也会尝试导入ES6模块,但失败了 那么-这是一个bug吗?或者,我是否误解了create re

我正在尝试使用CommonJS模块格式和CreateReact应用程序(CRA)。CRA的文件说明:

…Create React应用程序可以使用CommonJS和ES模块。对于Node.js 兼容性,建议主要入口点是CommonJS

我发现,当我导入一个提供ES6模块格式的模块(通过“package.json”中的“module”属性)时,CRA将其用作模块的入口点

因此,即使我的项目完全使用CJS,它也会尝试导入ES6模块,但失败了

那么-这是一个bug吗?或者,我是否误解了create react应用程序的预期行为

复制

我在这里复制了这个:。该项目是一个基本的CRA框架,修改为使用过的CJS

此外,我还添加了一个“测试模块”,其package.json包含一个“main”(CJS)和“module”(ES6)入口点

如果我们运行
npm start
,项目将无法生成,因为正在使用文件“test module/index.esm.js”。(我们可以编辑此文件以使用CJS格式,使项目生成更清晰)

从未使用过“test module/index.cjs.js”


谢谢:)

我发现这实际上是Webpack的一个问题(实际上是预期的行为):