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)