React craco 解决 webpack < 5 used to include polyfills for node.js core ...

简介: React craco 解决 webpack < 5 used to include polyfills for node.js core ...
+关注继续查看

  • 在运行 React 项目时,报错:


BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
        - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
        - install 'path-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
        resolve.fallback: { "path": false }
webpack compiled with 26 errors
  • 原因呢是 webpack5 在精简后,移除了 nodejs 核心模块的 polyfill 自动引入,所以需要手动引入,如果打包过程中有使用到 nodejs 核心模块,webpack 会提示进行相应配置。


  • 搜网上或看报错也知道如何解决,错误中已经说的很明白了,要么关闭,要么安装使用,比如上面的报错:


  • 【不推荐】方式一:webpack.config.js 方式
    • 执行 $ npm run eject 是否 webpack 配置文件,找到 config/webpack.config.js,搜索下 resolve: 配置,关闭一下配置:
resolve: {
  fallback: {
    "path": false, // 上面报错说可以关闭这个,其他的可以注释看报错不报错,报错就继续追加关闭
    "assert": false,
    "stream": false,
    "constants": false,
    "util": false,
    "fs": false,
  },
  ...
}

除了关闭,也可以选择使用

resolve: {
  fallback: {
    "path": require.resolve("path-browserify"), // 使用可能需要安装一下 npm i path-browserify,先重启看报错不报错,报错在安装
    ...
  },
  ...
}
  • 【推荐】方式二:craco.config.js 方式,这样就不需要释放 webpack 配置
const path = require('path')

module.exports = {
  // webpack 配置
  webpack: {
    // 配置别名
    alias: {
      // 约定:使用 @ 表示 src 文件所在路径
      "@": path.resolve(__dirname, "src")
    },
    // 这种方式是无效的,错误写法
    // resolve: {
    //   fallback: {
    //     "path": false,
    //     "util": false,
    //     ...
    //   }
    // },
    // 这种方式才对的
    // configure: (webpackConfig, { env, paths }) => {
    //   // eslint-disable-next-line no-param-reassign
    //   webpackConfig.resolve.fallback = {
    //     "path": false,
    //     "util": false,
    //     "url": false,
    //     "http": false,
    //     "https": false,
    //     "stream": false,
    //     "assert": false,
    //     "querystring": false,
    //     "zlib": false
    //   }
    //   return webpackConfig
    // },
    // 也可以这么写
    configure: {
      resolve: {
        fallback: {
          "path": false,
          "util": false,
          "url": false,
          "http": false,
          "https": false,
          "stream": false,
          "assert": false,
          "querystring": false,
          "zlib": false
        }
      }
    }
  }
}

相关文章
|
15小时前
|
JavaScript 前端开发 小程序
Vue、React和小程序中的组件通信:父传子和子传父的应用
组件化开发是将一个大型应用程序拆分成独立的、可重用的、可组合的模块,使得开发人员可以快速构建和开发应用程序。组件化开发提倡将应用程序的各个功能模块分离开发,每个模块完成自己的功能并且可以在不同的应用程序中被复用。这可以提高代码的可维护性、可测试性和可重用性,同时也可以使得开发和协作更加高效。其中父传子和子传父是常见的通信方式
5 0
|
7天前
|
前端开发
【React学习】—组件三大核心属性: state(七)
【React学习】—组件三大核心属性: state(七)
|
7天前
|
前端开发
【React学习】—类式组件(六)
【React学习】—类式组件(六)
【React学习】—类式组件(六)
|
7天前
|
前端开发
【React学习】—函数式组件(四)
【React学习】—函数式组件(四)
|
10天前
|
前端开发
写一个react 的页面 录像组件
写一个react 的页面 录像组件
7 0
|
21天前
|
XML 前端开发 JavaScript
从零开始学习React-目录结构,创建组件页面(二)
从零开始学习React-目录结构,创建组件页面(二)
11 0
|
21天前
|
前端开发
从零开始学习React-引入Ant Design 组件(八)
从零开始学习React-引入Ant Design 组件(八)
17 0
|
3月前
|
前端开发 JavaScript 开发者
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
122 0
|
3月前
|
前端开发
React 安装使用 Less(详细流程,包含 webpack、craco 方式)
React 安装使用 Less(详细流程,包含 webpack、craco 方式)
60 0
|
3月前
|
前端开发 JavaScript
React 配置别名 @ ( js/ts 项目中通过 @craco/craco 配置)
React 配置别名 @ ( js/ts 项目中通过 @craco/craco 配置)
59 0
相关产品
云迁移中心
推荐文章
更多