未捕获的 ReferenceError:未定义缓冲区

新手上路,请多包涵

我们的应用程序一直在标题中显示错误。该问题很可能与 Webpack 5 polyfill 有关,并且在经历了几个解决方案之后:

  1. 使用 npm 设置回退 + 安装
fallback: {
  "stream": require.resolve("stream-browserify"),
  "buffer": require.resolve("buffer/")
}

  1. 设置别名
alias: {
  "buffer": "buffer",
  "stream": "stream-browserify"
}

我们仍然看到可怕的错误:

 rfc6979.js:3 Uncaught ReferenceError: Buffer is not defined
    at Object.4142 (rfc6979.js:3)
    at r (bootstrap:19)
    at Object.5892 (js.js:4)
    at r (bootstrap:19)
    at Object.4090 (bip32.js:5)
    at r (bootstrap:19)
    at Object.7786 (index.js:3)
    at r (bootstrap:19)
    at Object.1649 (MnemonicKey.js:50)
    at r (bootstrap:19)

我们的设置是用于多目标的 vanilla NodeJS + TypeScript + Webpack:节点 + 浏览器。任何帮助都会很棒!

原文由 whileone 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

回答我自己的问题。有两件事有助于解决这个问题:

  1. 将带有 ProviderPlugin 的插件部分添加到 webpack.config.js
 const webpack = require('webpack');

module.exports = {
    // ...

    plugins: [
        // Work around for Buffer is undefined:
        // https://github.com/webpack/changelog-v5/issues/10
        new webpack.ProvidePlugin({
            Buffer: ['buffer', 'Buffer'],
        }),
        new webpack.ProvidePlugin({
            process: 'process/browser',
        }),
    ],

  1. 还将 resolve.fallback 添加到 webpack.config.js 中:
     resolve: {
        extensions: [ '.ts', '.js' ],
        fallback: {
            "stream": require.resolve("stream-browserify"),
            "buffer": require.resolve("buffer")
        }
    },

原文由 whileone 发布,翻译遵循 CC BY-SA 4.0 许可协议

我已经尝试了这里的所有答案来解决这个问题,但对我没有任何帮助。对我有用的是将以下内容放入我的 polyfills.ts 中:

 import { Buffer } from 'buffer';

// @ts-ignore
window.Buffer = Buffer;

当然, npm install --save buffer

原文由 parliament 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏