fsPromises.open() 在追加模式下打开时抛出错误
fsPromises.open() throws an error when opening in append mode
我正在尝试使用 fs/promises 模块在 Express 服务器上打开一个文件以在 NodeJS 中写入一些数据。我按照文档进行操作,但是当调用 open()
方法时,它会抛出错误 ENOENT: no such file or directory
。我通过使用脚本在文件夹中打开一个终端并使用 cd [path]
到达它应该创建文件的位置来验证文件路径是否正确,并且它有效。该路径位于“服务器”文件夹之外的文件夹中。该文件夹与“服务器”文件夹处于同一级别,所以我不确定这是否有所不同。
但是,根据 documentation,追加模式应该 在文件不存在时创建文件。
我的代码:
var express = require("express");
var router = express.Router();
const fsPromises = require('fs/promises');
const moment = require('moment');
router.post('/link',async function(req, res, next) {
const encryptedData = req.body;
const fileDate = moment().format("YYYYMMDD_HHms");
try {
let filePath = `../../folder/${fileDate}.txt`
let handle = await fsPromises.open(filePath,'a');
handle.write(encryptedData).then(writtenObject => {
if (writtenObject.bytesWritten == 0) {
console.log("No data was written");
}
});
await handle.close();
console.log("written");
res.send(true);
}
catch(e) {
console.log(e);
res.send(false);
};
});
它没有创建文件,我错过了什么或做错了什么?
正如@Christian Fritz 和@RickN 所提到的,我的道路已经关闭。就像提到的那样,路径是相对于主脚本的,并且在将行更新为
之后
let handle = await fsPromises.open(path.join(__dirname,filePath),'a');
成功了。
我正在尝试使用 fs/promises 模块在 Express 服务器上打开一个文件以在 NodeJS 中写入一些数据。我按照文档进行操作,但是当调用 open()
方法时,它会抛出错误 ENOENT: no such file or directory
。我通过使用脚本在文件夹中打开一个终端并使用 cd [path]
到达它应该创建文件的位置来验证文件路径是否正确,并且它有效。该路径位于“服务器”文件夹之外的文件夹中。该文件夹与“服务器”文件夹处于同一级别,所以我不确定这是否有所不同。
但是,根据 documentation,追加模式应该 在文件不存在时创建文件。
我的代码:
var express = require("express");
var router = express.Router();
const fsPromises = require('fs/promises');
const moment = require('moment');
router.post('/link',async function(req, res, next) {
const encryptedData = req.body;
const fileDate = moment().format("YYYYMMDD_HHms");
try {
let filePath = `../../folder/${fileDate}.txt`
let handle = await fsPromises.open(filePath,'a');
handle.write(encryptedData).then(writtenObject => {
if (writtenObject.bytesWritten == 0) {
console.log("No data was written");
}
});
await handle.close();
console.log("written");
res.send(true);
}
catch(e) {
console.log(e);
res.send(false);
};
});
它没有创建文件,我错过了什么或做错了什么?
正如@Christian Fritz 和@RickN 所提到的,我的道路已经关闭。就像提到的那样,路径是相对于主脚本的,并且在将行更新为
之后let handle = await fsPromises.open(path.join(__dirname,filePath),'a');
成功了。