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

时间:2018-02-21 22:17:03

标签: node.js create-react-app commonjs

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

  

..创建React App可以同时使用CommonJS和ES模块。对于Node.js   兼容性,建议主入口点是CommonJS ...

我发现当我导入一个提供ES6模块格式的模块时(通过"模块"" package.json"中的属性),CRA使用它作为入口点对于模块。

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

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

再生

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

此外,我添加了一个"测试模块",其package.json包含一个" main" (CJS)和"模块" (ES6)切入点。

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

"测试模块/ index.cjs.js"从未使用过。

谢谢:)

1 个答案:

答案 0 :(得分:0)

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