Express js 创建文件夹和删除文件夹导致错误

Express js Creating folder and removing folder causes error

提问人:Scott Chambers 提问时间:11/15/2023 更新时间:11/15/2023 访问量:11

问:

在 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 文件。即使文件夹是空的,在尝试删除文件夹时,它本身似乎也是错误的。 如果我终止作业然后重新开始,它就可以正常工作。

JavaScript 节点 .js Express

评论


答:

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/

Node.js WriteStream 同步