使用ES6编写的npm模块和react-scripts

时间:2018-05-26 08:54:54

标签: javascript ecmascript-6 create-react-app ecmascript-5 react-scripts

在我的项目中,我需要使用带有create-react-app的npm模块ipfs-api

我可以运行npm start并运行proect。

但是当我尝试使用react-scripts build构建proect时,它会抛出以下错误

  

编译失败。

     

无法缩小此文件中的代码:

     

./node_modules/ipfs-api/src/utils/module-config.js:7

     

在此处阅读更多内容:https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#npm-run-build-fails-to-minify

根据eorror日志中提供的链接中的建议,我尝试使用

"dependencies": {
     ...
     "ipfs-api": "github:atfornes/js-ipfs-api#transpiled",
     ...
}

而不是"ipfs-api": "^22.0.0",。虽然这解决了ipfs-api的错误,但是其他依赖模块(可能与ipfsapi一起安装)仍然会出现相同类型的Failed to minify错误,我已经停止手动转发它们。

在使用命令react-scripts build之前,有没有办法将所有依赖节点模块转换为es5?或者任何其他方法来克服这个问题?

1 个答案:

答案 0 :(得分:1)

通常,客户端或平台无关的包在发布时编译为ES5。您遇到此问题可能表明该软件包不适用于客户端。

正如enter image description here所解释的那样,该软件包包含一个浏览器包,其中包含在客户端运行它所需的polyfilled Node功能(流等)。

它应该被用作全球:

import 'ipfs-api/dist';

ipfs(...)
  

在使用命令react-scripts build之前,有没有办法将所有依赖节点模块转换为es5?

这需要弹出create-react-app配置并配置Webpack以正确地转换此包。文档中的the documentation显示了如何将特定于节点的部分配置为为浏览器捆绑。