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处理相对路径的方式有问题,有没有人遇到过同样的情况?或者有没有办法能可靠地用相对路径写入文件?
我试过的操作和预期结果
我本来预期相对路径能正常在脚本所在目录创建文件,但试了这些方法都没解决问题:
- 重新安装Node.js:在v22.14.0版本中问题依然存在
- 使用绝对路径(
C:/Users/niran/Documents/message.txt):完全可以正常写入 - 用
path.join(__dirname, "message.txt")拼接路径:还是会抛出EBADF错误 - 确保写入文件前目标目录已存在:没有任何改善
- 以管理员身份运行脚本:也没有效果
这是我最近的尝试代码:
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
相关产品推荐
相关产品推荐

