启动multisender项目报Module parse failed错误如何不升级包解决
问题根因
报错是因为你当前项目的babel配置默认不会转译node_modules目录下的代码,而你依赖的web3@1.0.0-beta.30版本中web3-eth-accounts包使用了ES6对象展开运算符(...tx),低版本babel默认不识别该语法,导致编译失败。
不升级依赖的解决步骤
你当前使用的是react-app-rewired@1.x版本,不需要升级任何现有依赖,只要修改项目根目录下的config-overrides.js文件即可:
- 第一步:先安装两个适配当前babel版本的依赖,不要安装最新版:
npm install babel-plugin-transform-object-rest-spread@6.x babel-loader@7.x --save-dev
- 第二步:修改项目根目录的
config-overrides.js文件,添加babel转译web3相关包的配置:
const rewireMobX = require('react-app-rewire-mobx'); const rewirePreact = require('react-app-rewire-preact'); module.exports = function override(config, env) { // 新增配置:让babel处理node_modules里的web3相关包 config.module.rules[1].oneOf.unshift({ test: /\.js$/, include: [ /node_modules\/web3-eth-accounts/, /node_modules\/web3-core-helpers/ ], loader: require.resolve('babel-loader'), options: { plugins: [require.resolve('babel-plugin-transform-object-rest-spread')], cacheDirectory: true, }, }); // 保留原有mobx和preact配置 config = rewireMobX(config, env); config = rewirePreact(config, env); return config; }
- 第三步:删除本地的
node_modules目录和package-lock.json(或yarn.lock)文件,重新执行npm install安装依赖,之后执行npm start即可正常启动项目。
方案说明
该方案完全适配你当前的react-app-rewired@1.x、react-scripts@1.1.1版本,不会触发升级后出现的injectBabelPlugin废弃报错,也不需要改动原有项目依赖的版本号。
内容的提问来源于stack exchange,提问作者Mahesh Ghamaand
相关产品推荐
相关产品推荐

