NodeJS “错误:ENOENT:no such file or directory”当尝试保存文件时

huwehgph  于 2023-04-29  发布在  Node.js
关注(0)|答案(2)|浏览(364)

我正在尝试使用我的网站创建一个json文件(稍后将部署)。这是我正在使用的代码

saveFile = (i, data) => {
  var filename = `${i}_may.json`;
  var folder_list = ["desktop", "data", filename];
  var dir = ".";
  folder_list.forEach(function (x, i) {
    dir = require("path").join(dir, `${x}`);
    if (!fs.existsSync(dir)) {
      fs.writeFileSync(dir, JSON.stringify(data));
    }
  });
};

但我一直收到这个错误

Error: ENOENT: no such file or directory, open 'desktop\data'

  errno: -4058,
  syscall: 'open',
  code: 'ENOENT',
  path: 'desktop\\data'

文件夹当然存在于我的桌面上。有没有办法让它在本地和部署后工作?

pxq42qpu

pxq42qpu1#

我不明白为什么你要使用forEach,如果你最终只想执行一次写入。
此外,在这里使用绝对路径是更好的选择。无论您的工作目录如何,脚本都会将文件保存在更正位置。

const path = require('path');
const fs = require('fs');

saveFile = (i, data) => {
  var filename = `${i}_may.json`;
  var dir = path.join(process.env.HOME, "Desktop", "data", filename);
  fs.writeFileSync(dir, JSON.stringify(data));
};
htzpubme

htzpubme2#

要将文件保存到[current_dir]\desktop\data,可以使用以下代码:

saveFile = (i, data) => {
  const filename = `${i}_may.json`;
  const dir = require("path").join("desktop", "data", filename);
  console.log(dir);

  if (!fs.existsSync(dir)) {
    fs.writeFileSync(dir, JSON.stringify(data));
  }
};

请注意,声明路径的正确方法是使用require("path").join('desktop','data',filename),这确保了路径的构造与运行平台无关。

相关问题