/** * 浏览器端 stream 桩模块 * * webpack5 不再内置 node polyfill,sax 等依赖在模块加载阶段就会 require('stream'): * var Stream * try { Stream = require('stream').Stream } catch (ex) { Stream = function () {} } * SAXStream.prototype = Object.create(Stream.prototype, {...}) * * 若把 stream 置空(fallback: { stream: false }),require('stream') 不会抛错, * 取到的 .Stream 是 undefined,上面这行就会抛 * “Cannot read properties of undefined (reading 'prototype')”,导致整个应用启动失败。 * 这里提供一个最小可用的 Stream 实现,保证模块加载期不报错。 */ function Stream() {} Stream.prototype.on = function () { return this; }; Stream.prototype.once = function () { return this; }; Stream.prototype.emit = function () { return false; }; Stream.prototype.removeListener = function () { return this; }; Stream.prototype.pipe = function () { return this; }; Stream.prototype.write = function () { return true; }; Stream.prototype.end = function () { return this; }; exports.Stream = Stream; exports.Readable = Stream; exports.Writable = Stream; exports.Duplex = Stream; exports.Transform = Stream; exports.PassThrough = Stream;