我可能看起来真的很蠢,但这段代码让我很沮丧。
if(fs.exist(parametters[0])){
fs.remove(parametters[0]);
return "removed";
}else{
return "doesn't exist"
}
问题是,fs.remove()
实际上已被调用,但函数正在返回"doesnt't exist"
,我错过了什么吗?
我没有使用nodejs,这是我创建的一个库,是异步的。 它不是修改参数,但它确实改变了条件,可能是吗?
我正在发布我的fs
对象,尽管我认为这不会改变任何内容。
fs = {
load: function() {
if (localStorage[0] == undefined || localStorage[0] == "undefined" || localStorage[0] == "") {
localStorage[0] = JSON.stringify(fs.files);
} else {
fs.files = JSON.parse(localStorage[0]);
}
},
save: function() {
localStorage[0] = JSON.stringify(fs.files);
},
files: [],
newFile: function(name, content, overwrite) {
if (overwrite == undefined)
overwrite = true;
if (fs.exist(name) && overwrite) {
fs.find(name).content = content;
fs.save();
}
if (!(fs.exist(name))) {
fs.files.push({
name: name,
content: content
});
fs.save();
}
},
exist: function(fileName) {
for (var i = 0; i < fs.files.length; i++) {
if (fs.files[i].name == fileName)
return true;
}
return false;
},
find: function(fileName) {
for (var i = 0; i < fs.files.length; i++) {
if (fs.files[i].name == fileName)
return fs.files[i];
}
return false;
},
format: function() {
fs.files = [];
localStorage[0] = undefined;
},
write: function(name, content, overwrite) {
if (overwrite == undefined)
overwrite = true;
if (fs.exist(name) && overwrite) {
fs.find(name).content = content;
fs.save();
}
if (!(fs.exist(name))) {
fs.files.push({
name: name,
content: content
});
fs.save();
}
},
remove: function(file) {
var arrToreturn = [];
for (var i = 0; i < fs.files.length; i++) {
if (fs.files[i].name != file)
arrToreturn.push(fs.files[i]);
}
fs.files = arrToreturn;
fs.save();
return arrToreturn;
}
}
已解决 - 在检查代码几天后,我发现函数被调用两次的错误,代码量非常大,所以花了我一段时间。
答案 0 :(得分:0)
您需要在return "doesn't exist"
中添加一个分号,它应该是return "doesn't exist";
答案 1 :(得分:0)
如果这是一个对象,它仍然有效。
我们可以假设这是一个File对象ARRAY,indexOf仍然可以查找该项是否存在。
请看下面的例子:
var fruits = [“Banana”,“Orange”,“Apple”,“Mango”]; var a = fruits.indexOf(“Apple”);
如果找到Apple,结果为2 如果找不到Apple,结果为-1
您可以在此链接中添加更多选项:http://www.w3schools.com/jsref/jsref_indexof_array.asp
由于
答案 2 :(得分:-1)
您可以尝试使用javascript indexOf函数来检查该值是否真的存在,在删除操作之前。
以下示例:
var str = "Hello world, welcome to the universe.";
var n = str.indexOf("welcome");
=&GT;如果找到则给出13 如果我们搜索“welcome1” - &gt;会给-1
答案 3 :(得分:-1)
使用此代码解决此问题。感谢
var fs = require(&#39; fs-extra&#39;)
fs.remove(&#39; / tmp / myfile&#39;,function(err){ if(错误)返回console.error(错误)
的console.log(&#39;成功&#39;!) })
fs.removeSync(&#39; / home / jprichardson&#39;)//我刚删除了整个HOME目录。