【问题标题】:Why can I create files in Node.js command line but not in program?为什么我可以在 Node.js 命令行中创建文件,但不能在程序中创建文件?
【发布时间】:2020-07-25 04:52:16
【问题描述】:
let path = `./backups/${new Date().toISOString()}.json`;
let text = JSON.stringify(db.all());
fs.appendFile(path, text, (err) => {
  if (err) throw err;
  console.log(`Backup successful to ${fileName}`);
});

每当我尝试通过 Node 运行它时,我总是收到错误 Error: "ENOENT: no such file or directory" 任何建议都非常感谢。谢谢。

【问题讨论】:

  • 因为您正在追加 - 并且仅在原始文件存在时才会追加
  • Not actually: "追加数据到文件,如果文件不存在则创建文件"。我想这只是某种权限问题。
  • @ÁlvaroGonzález 在这种情况下,它应该因 EACCES 而失败。
  • 备份文件夹不存在?此外,请考虑使用不同的时间戳格式。并非每个文件系统都允许您在路径中放置冒号。

标签: javascript node.js fs


【解决方案1】:

错误最终是 new Date().toISOString() 中的冒号。 我把它改成 让路径 = ./backups/${new Date().toISOString()}.json.replace(':', ','); 这现在有效。感谢 cmets 中的 Brad 指出这一点。

【讨论】:

    【解决方案2】:

    这是创建文件的方式:

    1. 检查目录是否存在以及您的程序是否有权访问该位置。
    2. 如果在这两种情况下都是,则将所有数据准备好并在该位置创建一个文件并将其放入。如果需要,在此之后将模式数据添加到文件中。
    3. 如果第 1 点中的任何一个都是“否”,则解决该问题并执行第 2 点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多