Webpack 5+Process未定义由stream-browserify触发

Mat*_*eru 6 node.js polyfills cbor webpack-5

我必须CBOR使用cbor节点模块解码编码数组。

当我启动命令时:

const decodedData = base45.decode(greenpassBody);
const output = pako.inflate(decodedData);
const results = cbor.decodeAllSync(output); // this line
Run Code Online (Sandbox Code Playgroud)

正在触发此错误:

_stream_readable.js:529 Uncaught ReferenceError: process is not defined
    at emitReadable (_stream_readable.js:529)
    at addChunk (_stream_readable.js:303)
    at readableAddChunk (_stream_readable.js:280)
    at NoFilter.Readable.push (_stream_readable.js:241)
    at NoFilter.Transform.push (_stream_transform.js:139)
    at NoFilter._transform (index.js:220)
    at NoFilter.Transform._read (_stream_transform.js:177)
    at NoFilter.Transform._write (_stream_transform.js:164)
    at doWrite (_stream_writable.js:409)
    at writeOrBuffer (_stream_writable.js:398)
Run Code Online (Sandbox Code Playgroud)

stram-browserifypolyfill 触发,需要在我的网络应用程序中使用所有这些包。

当我在网上阅读时,我尝试process在我的 中安装该模块package.json,然后在我的webpack配置文件中我尝试了几种方法:

fallback: {
  stream: require.resolve('stream-browserify'),
  util: require.resolve('util/'),
  zlib: require.resolve('browserify-zlib'),
  assert: require.resolve('assert/'),
  crypto: require.resolve('crypto-browserify'),
  fs: require.resolve('browserify-fs'),
  path: require.resolve('path-browserify'),
  process: require.resolve('process/browser'),  // <- this
}
Run Code Online (Sandbox Code Playgroud)
alias: {
    'jquery-ui': path.resolve(__dirname, "./node_modules/jquery-ui"),
    'owl.carousel': path.resolve(__dirname, "./node_modules/owl.carousel"),
    modernizr$: path.resolve(__dirname, "./modernizrrc.js"),
    WOW: 'wowjs',
    process: "process/browser", // 1st try
    process: path.resolve(__dirname, "./node_modules/process/browser.js"), // 2nd try
},
Run Code Online (Sandbox Code Playgroud)
    plugins: [
      // ...
      new webpack.DefinePlugin({
         process: "process/browser"
        "process.env": {
          ASSET_PATH: JSON.stringify(ASSET_PATH),
          NODE_ENV: JSON.stringify("development"),
          ENV: JSON.stringify("development"),
        },
      }),
Run Code Online (Sandbox Code Playgroud)

经过DefinePlugin尝试,错误发生了变化,它说browser is not defined

任何人都知道如何正确地填充这个模块或者是否有其他方法来使用该CBOR模块?

非常感谢

Mat*_*eru 13

解决了

问题是process必须提供插件,而不是定义:

它是

new webpack.ProvidePlugin({
  process: 'process/browser',
})
Run Code Online (Sandbox Code Playgroud)

不是

new webpack.DefinePlugin({
  process: 'process/browser',
}),
Run Code Online (Sandbox Code Playgroud)