javascript - 更新到 Node 10-alpine 后 - ERR_STREAM_CANNOT_PIPE

标签 javascript node.js google-cloud-storage gcloud

将服务器 Node JS 更新到 Node 10-alpine 版本后,我开始出现下一个错误

Error [ERR_STREAM_CANNOT_PIPE]: Cannot pipe, not readable.

我必须提到,在 Node 8-alpine 上,此代码可以正常工作(我尝试使用回滚)

在我的代码中,我尝试从 GCloud 返回文件:

try {
        const file = await 
         gcs.bucket(`BUCKET_NAME`).file(filePath);

        if (file) {
            const results = await file.getMetadata();
            const stream = await file.createReadStream();
            return res.pipe(stream);
            else {
                return send(res, 403)
            }
        }
        else {
            return send(res, 404);
        }
    } catch (err) {
        console.error(err);
        return send(res, 500);
    }

升级到 Node -10-alpine后有人遇到这样的问题吗?

最佳答案

正是错误所说的内容。 res.pipe(steam) 将可写流 stream 附加到可读流 res。但是stream是一个stream.Readable。请改用 fs.createWriteStream(...)file.createWriteStream(...)。这可能以前有效,因为您的 gcs.bucket(...).file(...) 函数返回一个具有可写文件描述符的文件。所以这可能是鸭子打字出错的情况。

关于javascript - 更新到 Node 10-alpine 后 - ERR_STREAM_CANNOT_PIPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58079077/

相关文章:

javascript - IOS - html 链接不工作 - 电话差距

javascript - nodejs : Async.系列只执行第一个函数就停止了

Node.js 通过 CLI 将文件移动到目录

python - GCS 如何知道我正在使用哪个项目?

google-cloud-platform - 访问拒绝异常 : 403 Forbidden on GCS using owner account

google-app-engine - 添加 SSL 应用程序引擎,其中自定义子域指向 Google 存储桶

javascript - 特定 div 元素的 onclick 事件处理程序

javascript - 动态/递归结构中的切换按钮

javascript - Passport.js `isAuthenticated()` 不一致的行为;应该为真时为假

javascript - node-schedule 不适用于在特定日期发送规则