我正在尝试删除node_modules目录(如果它存在且不为空)
var fs = require('fs'),
path = require('path'),
child_process = require('child_process'),
cmd;
module.exports = function(){
var modulesPath = '../modules';
fs.readdirSync(modulesPath)
.forEach(function(dir) {
var location = path.join(dir, 'node_modules');
if (fs.existsSync(location)){
fs.rmdir(location);
}
});
};
Run Code Online (Sandbox Code Playgroud)
不幸的是,fs.rmdir命令只有在没有文件的情况下才会删除目录.NodeJS没有一种简单的方法来强制删除
两班轮:
if (fs.existsSync(dir)) {
fs.rmdirSync(dir, {recursive: true})
}
Run Code Online (Sandbox Code Playgroud)
有几件事:
你的下一个(错误)功能来自哪里?
还要记住你调用的函数的node.js文档中的rmdir是这样的:https: //nodejs.org/api/fs.html#fs_fs_rmdir_path_callback
Asynchronous rmdir(2)
Run Code Online (Sandbox Code Playgroud)
posix的定义是:
deletes a directory, which must be empty.
Run Code Online (Sandbox Code Playgroud)
确保你的目录是空的,在这种情况下它似乎不会.
这里有一个关于非空目录的要点:
https://gist.github.com/tkihira/2367067
var fs = require("fs");
var path = require("path");
var rmdir = function(dir) {
var list = fs.readdirSync(dir);
for(var i = 0; i < list.length; i++) {
var filename = path.join(dir, list[i]);
var stat = fs.statSync(filename);
if(filename == "." || filename == "..") {
// pass these files
} else if(stat.isDirectory()) {
// rmdir recursively
rmdir(filename);
} else {
// rm fiilename
fs.unlinkSync(filename);
}
}
fs.rmdirSync(dir);
};
Run Code Online (Sandbox Code Playgroud)
这里有一个节点模块:
https://github.com/dreamerslab/node.rmdir
这些可能会让你走上正轨.
您现在可以使用fs.rm()或fs.promises.rm()像这样:
fs.rm("/directory-to-delete", { recursive: true, force: true })
Run Code Online (Sandbox Code Playgroud)
选项:
recursive <boolean>如果为 true,则执行递归目录删除。force <boolean>如果为 true,则如果路径不存在,则异常将被忽略。| 归档时间: |
|
| 查看次数: |
11286 次 |
| 最近记录: |