node.js - 未捕获的 ReferenceError:未定义缓冲区
问题描述
我们的应用程序一直在标题中显示错误。该问题很可能与 Webpack 5 polyfill 有关,并且在经历了几个解决方案之后:
- 使用 npm 设置回退 + 安装
fallback: {
"stream": require.resolve("stream-browserify"),
"buffer": require.resolve("buffer/")
}
- 设置别名
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:节点 + 浏览器。任何帮助都会很棒!
解决方案
回答我自己的问题。有两件事有助于解决这个问题:
- 将带有 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',
}),
],
- 还将 resolve.fallback 添加到 webpack.config.js 中:
resolve: {
extensions: [ '.ts', '.js' ],
fallback: {
"stream": require.resolve("stream-browserify"),
"buffer": require.resolve("buffer")
}
},
推荐阅读
- docker - 为什么容器在 CMD ( docker ) 中启动后不启动?
- javascript - 消息:未初始化的字符串偏移量:0,同时插入动态输入字段数据
- python - 我们如何以及为什么使用时间分布层包裹的 CNN 层?
- angular - 在 Angular 中按顺序运行一组 http 调用
- node.js - NodeJs 是否使用“根目录”?
- css - 原生基卡高度未调整
- android - 如何使您的父母可点击但孩子不可点击?
- swift - 我不知道为什么我不能从以下网址下载这张图片:http://upload.wikimedia.org/wikipedia/de/d/d2/Juventus_Turin.svg
- mongodb - 如何在 mongoDB 集合字段中保存大型 html 内容(文章)?
- java - Androidx 迁移后 MaterialCardView 不会受其样式影响