You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目部署Netlify时出现createRoot is not a function错误求助

解决React项目部署到Netlify时的“r.createRoot is not a function”错误

问题详情

部署React项目到Netlify平台时触发错误:r.createRoot is not a function,项目代码及依赖配置如下:

index.js 代码

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
import { Provider } from "react-redux";
import { store } from "./redux/store";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <React.StrictMode>
    <Provider store={store}>
      <App />
    </Provider>
   </React.StrictMode>
);

reportWebVitals();

package.json 依赖项

"dependencies": {
  "@emotion/react": "^11.10.6",
  "@emotion/styled": "^11.10.6",
  "@mui/icons-material": "^5.11.16",
  "@mui/lab": "^5.0.0-alpha.127",
  "@mui/material": "^5.12.1",
  "@mui/styles": "^5.12.0",
  "@reduxjs/toolkit": "^1.9.4",
  "@testing-library/jest-dom": "^5.16.5",
  "@testing-library/react": "^13.4.0",
  "@testing-library/user-event": "^13.5.0",
  "axios": "^1.3.5",
  "classnames": "^2.3.2",
  "env-cmd": "^10.1.0",
  "formik": "^2.2.9",
  "react": "^18.2.0",
  "react-dom": "^18.2.0",
  "react-redux": "^8.0.5",
  "react-router-dom": "^6.10.0",
  "react-scripts": "5.0.1",
  "react-slick": "^0.29.0",
  "react-toastify": "^9.1.2",
  "slick-carousel": "^1.8.1",
  "styled-components": "^5.3.9",
  "web-vitals": "^2.1.4",
  "yup": "^1.1.1"
}

解决方案

这个错误本质是运行环境中使用了低于React 18版本的react-dom,因为createRoot是React 18新增的API,按以下步骤排查解决:

1. 本地清理依赖并重新安装

先在本地确保依赖版本正确,避免本地构建产物携带旧版本:

rm -rf node_modules package-lock.json
npm install

完成后运行npm run build,确认本地构建无错误,再推送代码到仓库。

2. 强制Netlify清除缓存重新部署

Netlify默认会缓存依赖,可能导致旧版本react-dom未被更新:

  • 登录Netlify后台,进入你的项目页面
  • 点击顶部的Deploys选项卡,找到最新的部署记录,点击右侧的Clear cache and deploy site
  • 等待重新部署完成,查看错误是否消失

3. 锁定react-dom版本避免依赖降级

部分第三方依赖可能会强制安装旧版react-dom,用以下命令检查依赖树:

npm ls react-dom

如果发现有依赖导致版本降级,在package.json中添加resolutions字段锁定版本:

"resolutions": {
  "react-dom": "18.2.0"
}

然后执行:

npx npm-force-resolutions
npm install

重新构建并推送代码。

4. 检查代码中的导入一致性

确保项目中所有使用ReactDOM的地方都采用React 18的导入方式:

import ReactDOM from "react-dom/client";

不要混合使用旧的import ReactDOM from 'react-dom'导入方式,这会导致API不兼容。


内容的提问来源于stack exchange,提问作者Hiếu Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:03:09