You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Electron中使用got搭配createWriteStream下载图片报错如何解决?

解决方案

错误根因

  • util.promisify转换后的stream.pipeline为Promise风格API,不再支持传入末尾回调参数,你传入的回调函数被错误识别为管道目标流,触发类型不匹配报错
  • 代码中stream.finished监听的input变量未定义,属于冗余代码,Promise版本的pipeline本身会在流处理完成/报错时自动resolve/reject,无需额外监听流状态

正确实现代码

const { promisify } = require('util');
const stream = require('stream');
const fs = require('fs');
const got = require('got');

const pipeline = promisify(stream.pipeline);

module.exports.getTile = async function (url, outputFilePath) {
  try {
    await pipeline(
      got.stream(url),
      fs.createWriteStream(outputFilePath)
    );
    console.log('Pipeline succeeded');
    console.log('Stream is done reading');
  } catch (err) {
    console.error('Pipeline failed', err);
    // 可根据业务需要选择是否抛出错误给上层调用方处理
    throw err;
  }
};

调用说明

原有调用方式await getTile(url, tilePath);无需修改,建议上层调用时添加try/catch块捕获异常做业务兼容处理。

内容的提问来源于stack exchange,提问作者dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:30:00