提问人:Scott Chambers 提问时间:11/15/2023 更新时间:11/15/2023 访问量:11
Express js 创建文件夹和删除文件夹导致错误
Express js Creating folder and removing folder causes error
问:
在 index.js 中创建文件夹代码
let companydir = './views/campaigns/' + companyname;
if(!fs.existsSync(companydir, { recursive: true })) {
fs.mkdirSync(companydir, { recursive: true });
}
var dir = companydir + '/' + nameToGenerate;
if (!fs.existsSync(dir, { recursive: true })) {
fs.mkdirSync(dir, { recursive: true });
var build = fs.createWriteStream(dir + '/index.jade', {
flags: 'a'
});
删除索引 .js 中的文件夹代码
fs.rmSync('./views/campaigns/' + companyname + '/' + deletetarget, { recursive: true, force: true });
如果我运行 NPM start,则可以删除之前在 campaigns 文件夹中创建的任何文件夹。但是,在同一实例中创建然后删除的任何文件夹始终出错,并出现以下错误:
Error: ENOTEMPTY: directory not empty, rmdir '<pathurl that is now emptied>'
at Object.rmdirSync (node:fs:1227:10)
at _rmdirSync (node:internal/fs/rimraf:260:21)
at rimrafSync (node:internal/fs/rimraf:193:7)
at Object.rmSync (node:fs:1276:10)
at Query.<anonymous> (<pathurl>routes\index.js:192:10)
at Query.<anonymous> (<pathurl>\node_modules\mysql\lib\Connection.js:526:10)
at Query._callback (<pathurl>\node_modules\mysql\lib\Connection.js:488:16)
at Sequence.end (<pathurl>\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
at Query._handleFinalResultPacket (<pathurl>\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
at Query.EofPacket (<pathurl>\node_modules\mysql\lib\protocol\sequences\Query.js:133:8) {
errno: -4051,
syscall: 'rmdir',
code: 'ENOTEMPTY',
path: '<pathurl>'
}
它确实删除了我放在文件夹中的 index.jade 文件。即使文件夹是空的,在尝试删除文件夹时,它本身似乎也是错误的。 如果我终止作业然后重新开始,它就可以正常工作。
答:
0赞
Scott Chambers
11/15/2023
#1
在写这个问题时,我解决了这个问题,并决定分享我的解决方案,以防其他人有类似的问题。
var build = fs.createWriteStream(dir + '/index.jade', {
flags: 'a'
});
“”是问题所在。它需要交换到 SYNC 函数createWriteStream
let data = "test";
fs.writeFileSync(dir + '/test.txt', data);
这是我的修复程序,它非常适合我的需求。
延伸阅读:
https://www.geeksforgeeks.org/node-js-fs-writefilesync-method/
评论