当项目使用 CommonJS 模块时,create-react-app 将模块导入为 ES6 模块

create-react-app importing modules as ES6 Modules when project is using CommonJS Modules

我正在尝试通过 create-react-app (CRA) 使用 CommonJS 模块格式。 CRA 的文档说:

..Create React App can consume both CommonJS and ES modules. For Node.js compatibility, it is recommended that the main entry point is CommonJS...

我发现当我导入一个提供 ES6 模块格式的模块时(via is "module" 属性 in "package.json"),然后 CRA 将其用作入口点模块。

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

那么 - 这是一个错误吗?或者,我是否误解了 create-react-app 的预期行为?

复制

我在这里转载了这个:https://github.com/mjashanks/cra-test。这个项目是一个基本的 CRA 框架,修改为使用 CJS。

此外,我添加了一个 "test-module",其 package.json 包括一个 "main" (CJS) 和 "module" (ES6) 入口点。

如果我们 运行 npm start,项目将无法构建,因为正在使用文件 "test-module/index.esm.js"。 (我们可以编辑此文件以使用 CJS 格式来构建项目并使其更加清晰)。

"test-module/index.cjs.js" 从未使用过。

谢谢:)

我发现这实际上是 Webpack 的一个问题(实际上是预期的行为):https://github.com/webpack/webpack/issues/5756