Gatsby / Webpack Polyfill 问题

Posted

技术标签:

【中文标题】Gatsby / Webpack Polyfill 问题【英文标题】:Gatsby / Webpack Polyfill Issue 【发布时间】:2021-08-10 02:24:11 【问题描述】:

我正在运行一个 Gatsby3 网站,并且像许多人一样,当我尝试使用某些 web3 插件时,我遇到了关于缺少 Polyfills 的 Webpack 5 错误。我知道他们不再自动执行这些操作,我必须自己处理。

在尝试了我能找到的所有解决方案后,这个似乎应该可以工作,但不适合我。我猜我做错了什么/错过了什么。

这是我添加到 Gatsby 配置中的内容,用于处理“crypto”和“stream”缺少的 polyfill:

exports.onCreateWebpackConfig = ( actions ) => 
  actions.setWebpackConfig(
    resolve: 
      fallback: 
        crypto: require.resolve('crypto-browserify'),
        stream: require.resolve('stream-browserify'),
      ,
    ,
  )

我确实安装了加密浏览器和流浏览器。

然而,同样的错误仍然存​​在:

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:  "stream":
require.resolve("stream-browserify") '
        - install 'stream-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
        resolve.fallback:  "stream": false 
Crypto 出现上述相同错误。

感谢任何帮助!提前谢谢你。

【问题讨论】:

这是您的完整 onCreateWebpackConfig 实例吗?你也可以分享你的package.json 吗? 【参考方案1】:

我也遇到了同样的问题。

您的配置代码是正确的,这是我用来解决问题的方法,方法是将其添加到根文件夹的 gatsby-node.js 中,然后安装两个 npm 包。

请务必将配置代码放入gatsby-node.js 而不是gatsby-config.js,就像我看到您的问题时所做的那样。

【讨论】:

以上是关于Gatsby / Webpack Polyfill 问题的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 5 收到 Polyfill 错误?!?!我的 JavaScript React 项目在尝试编译我的 webpack.config.js 文件时收到一个 polyfill 错误

webpack之polyfill踩坑之路

[Webpack 2] Polyfill Promises for Webpack 2

webpack优化篇(五十):使用动态 Polyfill 服务

Gatsby - webpack 无法使用 `gatsby-plugin-alias-imports` 解析别名导入

带有 webpack 的 Intl.js polyfill/shim?