使用Babel编译JSX时Node.js终端提示'react doesn't exist'报错如何解决
报错原因
- 核心问题是仅安装了Babel的JSX语法转换预设
babel-preset-react,未安装React本身的运行时依赖。Babel的作用是把JSX语法转换为浏览器可识别的普通JS代码,转换后的代码依然需要调用React暴露的接口才能正常运行,缺少React包就会触发找不到的报错。 - 从你提供的
package.json可以看到,依赖项里只有Babel相关的预设包,没有react、react-dom的依赖条目,也验证了上述问题。
解决方案
- 第一步:安装React核心运行时依赖,执行以下命令:
npm install react react-dom
如果是项目需要适配旧版本React,可在包名后指定对应版本号,比如npm install react@16 react-dom@16。 - 第二步(可选,适配Babel7+规范):你当前用的
babel-preset-env、babel-preset-react是Babel6时代的旧包,已经停止维护,如果你使用的是Babel7及以上版本,建议替换为官方新维护的预设包,执行以下命令:
// 卸载旧预设 npm uninstall babel-preset-env babel-preset-react // 安装新预设 npm install @babel/preset-env @babel/preset-react --save-dev
替换后编译命令同步修改为:npx babel src/index.js --out-file=public/main.js --presets=@babel/preset-env,@babel/preset-react
- 第三步:重新执行编译命令,报错即可解决。
内容的提问来源于stack exchange,提问作者YAMANY
相关产品推荐
相关产品推荐

