Renovate 自动升级依赖后 React 组件报错怎么办?

豫豪(打工版) 阅读 39

我用 Renovate 自动更新了项目依赖,结果一个原本正常的 React 组件突然报错说 “React is not defined”,但本地开发时完全没问题。是我配置错了还是需要额外处理?

出问题的组件代码很简单,就是个基础的函数式组件:

import React from 'react';

const Button = ({ label }) => {
  return <button>{label}</button>;
};

export default Button;

奇怪的是,构建产物里确实没打包 React,但以前都没这问题,就这次 Renovate 升级 @babel/preset-react 和 react 本身之后才出现的。

我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
翌岍(打工版)
改成这样,在 Babel 配置里显式声明 React 作为 runtime 或自动引入,比如在 .babelrcbabel.config.js 里加:

{
"presets": [
["@babel/preset-react", { "runtime": "automatic" }]
]
}


或者如果你用的是旧版(不推荐但常见),至少确保 @babel/plugin-transform-react-jsx 没被 Renovate 升级后误删,或者手动加回:

{
"plugins": ["@babel/plugin-transform-react-jsx"]
}


Renovate 升级 @babel/preset-react 后默认 JSX runtime 改成了 automatic,但你项目里没配 import React 也没配 runtime,所以构建时 React 被 tree-shaking 掉了,本地 dev server 因为 devtools 或缓存没触发问题,一打包就崩。
点赞
2026-02-23 20:08