Cloud9搭建React项目运行npm start遇fetch-blob模块#字符解析报错
问题判定
该问题与你安装使用的node-fetch依赖直接相关。
报错原因:v3及以上版本的node-fetch依赖了fetch-blob包,该包内部使用了JavaScript私有类属性语法(即以
#开头的类成员标识),你当前项目的Babel转译配置未开启该语法的兼容处理,因此babel-loader处理fetch-blob源码时无法识别该语法,触发解析失败报错。
解决方案
你可以根据自身需求选择以下任意一种方案处理:
- 方案1:降级node-fetch到v2版本(操作成本最低,无需修改项目配置)
执行以下命令卸载当前版本,安装v2分支的node-fetch:
如果你的项目使用TypeScript,还需要同步安装对应版本的类型声明包:npm uninstall node-fetch npm install node-fetch@2npm install @types/node-fetch@2 --save-dev - 方案2:升级Babel配置支持私有类属性语法(适用于需要使用node-fetch v3+特性的场景)
- 首先安装所需的Babel转译插件:
npm install @babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods @babel/plugin-proposal-private-property-in-object --save-dev- 修改项目根目录下的
.babelrc或babel.config.json配置文件,在plugins数组中新增已安装的三个插件:
{ "plugins": [ "@babel/plugin-proposal-class-properties", "@babel/plugin-proposal-private-methods", "@babel/plugin-proposal-private-property-in-object" ] } - 方案3:如果你是使用create-react-app初始化的未eject项目,无法直接修改Babel配置,优先选择方案1降级node-fetch即可。
所有方案操作完成后,删除项目根目录的node_modules文件夹和package-lock.json(或yarn.lock)文件,重新执行npm install安装依赖后再运行npm start即可解决报错。
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

