首页 > 解决方案 > Electron Node fs.writefile 承诺中间失败

问题描述

在 Electron 8.2.1 应用程序中,中间情况下的以下“写入文件”、“检查哈希”(仅有时)会失败。它将显示它已计算出 d41d8cd98f00b204e9800998ecf8427e,它是空字符串的哈希值。但是,当我查看文件夹时,该文件存在。所以我的假设是,有时在较高负载下的 fs.writeFile 仍然没有准备好写入,或者文件返回空字符串而不是内容。请注意,在 99% 的情况下,应用程序都能正常运行。仅在某些情况下(并且我们认为负载非常高)这会失败。

我读了节点 - fs.writeFile 创建了一个更接近的空白文件,但它没有提供原因或“为什么”,也没有因此您需要这样做。

fs.writeFile(cPath, body, 'utf-8', (err) => {
    if (err) {
      errors.handleErrorLocal(err);
      reject();
      return;
    }
    log.info(cFile + ' C HASH is:' + hash + ' HASH calculated:' + md5File.sync(cPath))
    if (hash && md5File.sync(cPath) !== hash.toLowerCase()) {
       log.warn('C failed to download. Wrong Hash. ', cFile)
    }
    resolve();
});

panu-logic 中关于node.js readfile woes 的答案似乎与这种经验相对应(底部答案),但也没有提供任何理由,除了“神奇”之外,他在写作时尝试阅读。“逻辑上”并非如此,但假设是出于某种未知原因,情况并非如此。

我知道我可以重写以流式传输或等待,但这需要我更改它,将其推出,等待一段时间的错误然后重试。我宁愿在这一切之前知道原因是什么,并且只是确定解决这个问题而不是延长数周或数月。

标签: node.jsasynchronouspromiseelectronfs

解决方案


推荐阅读