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
        }
      }
    }
  }
}
相关文章
|
8月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
434 2
|
前端开发 JavaScript NoSQL
使用 Node.js、Express 和 React 构建强大的 API
本文详细介绍如何使用 Node.js、Express 和 React 构建强大且动态的 API。从开发环境搭建到集成 React 前端,再到利用 APIPost 高效测试 API,适合各水平开发者。内容涵盖 Node.js 运行时、Express 框架与 React 库的基础知识及协同工作方式,还涉及数据库连接和前后端数据交互。通过实际代码示例,助你快速上手并优化应用性能。
|
JavaScript
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
这篇文章介绍了如何将webpack的配置文件分离成开发环境和生产环境的配置文件,以提高打包效率。
344 1
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
|
前端开发 JavaScript 测试技术
React 中集成 Chart.js 图表库
本文介绍了如何在 React 项目中集成 Chart.js 创建动态图表,涵盖基础概念、安装步骤、代码示例及常见问题解决方法,帮助开发者轻松实现数据可视化。
529 11
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
1111 10
|
资源调度 前端开发 数据可视化
构建高效的数据可视化仪表板:D3.js与React的融合之道
【10月更文挑战第25天】在数据驱动的时代,将复杂的数据集转换为直观、互动式的可视化表示已成为一项至关重要的技能。本文深入探讨了如何结合D3.js的强大可视化功能和React框架的响应式特性来构建高效、动态的数据可视化仪表板。文章首先介绍了D3.js和React的基础知识,然后通过一个实际的项目案例,详细阐述了如何将两者结合使用,并提供了实用的代码示例。无论你是数据科学家、前端开发者还是可视化爱好者,这篇文章都将为你提供宝贵的洞见和实用技能。
511 5
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
437 0
|
缓存 前端开发 JavaScript
Webpack 打包的基本原理
【10月更文挑战第5天】
|
前端开发 JavaScript
ES6模块化和webpack打包
【10月更文挑战第5天】
|
JavaScript
webpack打包TS
webpack打包TS
296 60