Процесс Webpack 5 не определен, запускаемый stream-browserify

#node.js #polyfills #webpack-5 #cbor

Вопрос:

Я должен декодировать CBOR закодированный массив с помощью модуля cbor узла.

Когда я запускаю свою команду:

 const decodedData = base45.decode(greenpassBody);
const output = pako.inflate(decodedData);
const results = cbor.decodeAllSync(output); // this line
 

эта ошибка срабатывает:

 _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)
 

Вызвано stram-browserify заполнением, необходимым для использования всех этих пакетов в моем веб-приложении.

Как я читал в Интернете, я попытался установить 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
}
 
 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
},
 
     plugins: [
      // ...
      new webpack.DefinePlugin({
         process: "process/browser"
        "process.env": {
          ASSET_PATH: JSON.stringify(ASSET_PATH),
          NODE_ENV: JSON.stringify("development"),
          ENV: JSON.stringify("development"),
        },
      }),
 

С этой DefinePlugin попыткой ошибка изменилась, говорилось browser is not defined в нем .

Кто-нибудь знает, как правильно заполнить этот модуль или есть ли другие способы использования CBOR модуля?

Большое спасибо

Ответ №1:

решенный

проблема заключалась в том, что process плагин должен быть предоставлен, а не определен:

это

 new webpack.ProvidePlugin({
  process: 'process/browser',
})
 

нет

 new webpack.DefinePlugin({
  process: 'process/browser',
}),