我正在尝试删除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); } }); };
解决方法
有几件事:
还记得你调用的函数的node.js文档中的rmdir是这样的:
https://nodejs.org/api/fs.html#fs_fs_rmdir_path_callback
Asynchronous rmdir(2)
posix的定义是:
deletes a directory,which must be empty.
确保你的目录是空的,在这种情况下它似乎不会.
这里有一个关于非空目录的要点:
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); };
这里有一个节点模块:
https://github.com/dreamerslab/node.rmdir
这些可能会让你走上正轨.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。