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
        }
      }
    }
  }
}

相关文章
|
前端开发 JavaScript 开发者
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
392 0
|
6月前
|
JavaScript 前端开发
React craco 解决 webpack < 5 used to include polyfills for node.js core ...
React craco 解决 webpack < 5 used to include polyfills for node.js core ...
692 0
|
6月前
|
前端开发 JavaScript 开发者
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
1467 0
|
前端开发
React 安装使用 Less(详细流程,包含 webpack、craco 方式)
React 安装使用 Less(详细流程,包含 webpack、craco 方式)
513 0
|
前端开发 JavaScript
React 配置别名 @ ( js/ts 项目中通过 @craco/craco 配置)
React 配置别名 @ ( js/ts 项目中通过 @craco/craco 配置)
254 0
|
6月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
362 0
|
6月前
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
77 0
|
6月前
|
前端开发
【第31期】一文学会用React Hooks组件编写组件
【第31期】一文学会用React Hooks组件编写组件
79 0
|
6月前
|
存储 前端开发 JavaScript
【第29期】一文学会用React类组件编写组件
【第29期】一文学会用React类组件编写组件
76 0
|
6月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
122 0
下一篇
无影云桌面