Javascript @谷歌云/存储在工作了很长时间后突然抛出奇怪的异常
上下文:Javascript @谷歌云/存储在工作了很长时间后突然抛出奇怪的异常,javascript,node.js,google-cloud-storage,Javascript,Node.js,Google Cloud Storage,上下文: getFile: async (req, res) => { try { const fileName = req.param('file'); res.setHeader('Content-Type', 'application/octet-stream'); res.setHeader('Content-Disposition', 'attachment; filename=' + fileName + ''); c
getFile: async (req, res) => {
try {
const fileName = req.param('file');
res.setHeader('Content-Type', 'application/octet-stream');
res.setHeader('Content-Disposition', 'attachment; filename=' + fileName + '');
const storage = new Storage();
let file = await storage.bucket('fancy_induction_ui').file(fileName).createReadStream();
file.pipe(res);
} catch (e) {
res.status(500).json({message: 'Something is wrong!', err: e.message});
}
}
path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317
var isBuf = !state.objectMode && _isUint8Array(chunk);
^
TypeError: Cannot read property 'objectMode' of undefined
at DestroyableTransform.Writable.write (path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317:22)
at PassThrough.ondata (_stream_readable.js:714:22)
at PassThrough.emit (events.js:321:20)
at PassThrough.EventEmitter.emit (domain.js:482:12)
at PassThrough.Readable.read (_stream_readable.js:512:10)
at flow (_stream_readable.js:989:34)
at resume_ (_stream_readable.js:970:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
我有一个API端点,它为存储在公共Google云存储桶中的.stl文件提供服务。直到本周的某个时候,它一直运转良好。我可以使用调试器一步一步地完成我的代码。我的项目中甚至没有提到有问题的NPM模块。我曾尝试使用谷歌文档中的精确代码进行下载,但得到了相同的异常:
我尝试过的
npm rebuild@google cloud/storage
以及使用同一个google npm包的不同方式
问题:
getFile: async (req, res) => {
try {
const fileName = req.param('file');
res.setHeader('Content-Type', 'application/octet-stream');
res.setHeader('Content-Disposition', 'attachment; filename=' + fileName + '');
const storage = new Storage();
let file = await storage.bucket('fancy_induction_ui').file(fileName).createReadStream();
file.pipe(res);
} catch (e) {
res.status(500).json({message: 'Something is wrong!', err: e.message});
}
}
path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317
var isBuf = !state.objectMode && _isUint8Array(chunk);
^
TypeError: Cannot read property 'objectMode' of undefined
at DestroyableTransform.Writable.write (path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317:22)
at PassThrough.ondata (_stream_readable.js:714:22)
at PassThrough.emit (events.js:321:20)
at PassThrough.EventEmitter.emit (domain.js:482:12)
at PassThrough.Readable.read (_stream_readable.js:512:10)
at flow (_stream_readable.js:989:34)
at resume_ (_stream_readable.js:970:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
1.)是否应该捕获异常以防止崩溃
2.)有人对解决方法有什么想法吗
文件:
代码:
getFile: async (req, res) => {
try {
const fileName = req.param('file');
res.setHeader('Content-Type', 'application/octet-stream');
res.setHeader('Content-Disposition', 'attachment; filename=' + fileName + '');
const storage = new Storage();
let file = await storage.bucket('fancy_induction_ui').file(fileName).createReadStream();
file.pipe(res);
} catch (e) {
res.status(500).json({message: 'Something is wrong!', err: e.message});
}
}
path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317
var isBuf = !state.objectMode && _isUint8Array(chunk);
^
TypeError: Cannot read property 'objectMode' of undefined
at DestroyableTransform.Writable.write (path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317:22)
at PassThrough.ondata (_stream_readable.js:714:22)
at PassThrough.emit (events.js:321:20)
at PassThrough.EventEmitter.emit (domain.js:482:12)
at PassThrough.Readable.read (_stream_readable.js:512:10)
at flow (_stream_readable.js:989:34)
at resume_ (_stream_readable.js:970:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
Stacktrace:
getFile: async (req, res) => {
try {
const fileName = req.param('file');
res.setHeader('Content-Type', 'application/octet-stream');
res.setHeader('Content-Disposition', 'attachment; filename=' + fileName + '');
const storage = new Storage();
let file = await storage.bucket('fancy_induction_ui').file(fileName).createReadStream();
file.pipe(res);
} catch (e) {
res.status(500).json({message: 'Something is wrong!', err: e.message});
}
}
path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317
var isBuf = !state.objectMode && _isUint8Array(chunk);
^
TypeError: Cannot read property 'objectMode' of undefined
at DestroyableTransform.Writable.write (path/to/code/node_modules/readable-stream/lib/_stream_writable.js:317:22)
at PassThrough.ondata (_stream_readable.js:714:22)
at PassThrough.emit (events.js:321:20)
at PassThrough.EventEmitter.emit (domain.js:482:12)
at PassThrough.Readable.read (_stream_readable.js:512:10)
at flow (_stream_readable.js:989:34)
at resume_ (_stream_readable.js:970:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
在我看来,不同版本中的bug在深度依赖中是可读的。 我补充说
可读流:“3.6.0”
对于我的package.lock,我已经解决了这个问题。如果问题来自服务器,catch子句将防止崩溃。这看起来像是Node.js可读流中的一个问题。看见也许升级到最新版本会有所帮助。请在Node.js GitHub存储库中提出您的问题。@matt gardner您解决了这个问题吗?我有同样的问题…如上所述,我有同样的问题与mssql使用乏味的。有人解决了这个问题吗?你解决了吗?我有确切的问题,但只在我的测试环境中。。您找到解决方案了吗?使用Readable stream处理多个依赖项怎么样?我有一些使用不同版本的,例如在npm安装中,它只是重复使用3.4.0。