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

Node.js 22.14.0中使用相对路径./调用fs.writeFile报EBADF错误,使用/却正常的问题求助

Node.js 22.14.0中使用相对路径./调用fs.writeFile报EBADF错误,使用/却正常的问题求助

我在使用Node.js的fs.writeFile时遇到了一个奇怪的问题:当我用相对路径./message.txt写入文件时,总是会抛出这个错误:

[Error: EBADF: bad file descriptor, write] {
  errno: -4083,
  code: 'EBADF',
  syscall: 'write'
}

但如果我用/message.txt,文件会直接创建在C盘根目录,完全没问题。我用的是Node.js v22.14.0,而且已经确认目录存在、试过绝对路径,但问题还是存在。我怀疑可能是这个版本的Node.js处理相对路径的方式有问题,有没有人遇到过同样的情况?或者有没有办法能可靠地用相对路径写入文件?

我试过的操作和预期结果

我本来预期相对路径能正常在脚本所在目录创建文件,但试了这些方法都没解决问题:

  1. 重新安装Node.js:在v22.14.0版本中问题依然存在
  2. 使用绝对路径(C:/Users/niran/Documents/message.txt):完全可以正常写入
  3. 用path.join(__dirname, "message.txt")拼接路径:还是会抛出EBADF错误
  4. 确保写入文件前目标目录已存在:没有任何改善
  5. 以管理员身份运行脚本:也没有效果

这是我最近的尝试代码:

try {
  const fs = require("fs");
  const path = require("path");

  const filePath = path.join(__dirname, "message.txt");

  console.log(filePath);

  fs.readFile(filePath, "utf8", (err, data) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log(data);
  });

  fs.writeFile(filePath, "Hello, Node.js", (err) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log("The file has been saved!");
  });
} catch (error) {
  console.log(error);
}

我的预期行为

我本来以为文件会被创建在脚本所在的目录下,但实际还是抛出了EBADF错误。

备注:内容来源于stack exchange,提问作者Niranajn P Shaji

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:29:31