TL; DR 为什么第一个文件被写入,但剩下的文件是空的?
我在Node.js中有一个for循环,它循环一个文件字符串的数组列表。每个字符串代表其各自目录中的不同文件。该数组包含创建三个单独文件所需的三个值。创建并写入第一个文件后,将创建第二个和第三个文件,但保持为空。以下是代码的简写版本。非常感谢任何帮助。
for(i in file_tree) {
fp = fs.createWriteStream(file_tree[i]);
for(i in data) {
fp.write(data[i]+'\n', function (err) { if(error) throw err;});
}
} // end for loop - file_tree
======解决方案=====
file_tree = [
pn+ '/theme/file1',
pn+ '/theme/file2',
pn+ '/theme/file3',
];
for(i in file_tree) {
file_name = file_tree[i];
fp = fs.createWriteStream(file_name);
data = [];
switch(file_name) {
case pn+ "/theme/file1":
--- snip --
break;
//
// ERROR BEGINS HERE : Notice no '/' prefix
//
case pn+ "theme/file2":
--snip--
break;
default: show(help);
}
for(i in data) {
fp.write(data[i]+'\n', function(err) { if (err) throw err; });
}
}
答案 0 :(得分:1)
data
尚未正确初始化。之前的代码是:
file_tree = [ pn+ '/theme/file1', pn+ '/theme/file2', pn+ '/theme/file3'];
for(i in file_tree) {
file_name = file_tree[i];
fp = fs.createWriteStream(file_name);
data = [];
switch(file_name) {
case pn+ "/theme/file1":
data.push("content-1");
break;
case pn+ "theme/file2": // <-- error
data.push("content-2");
break;
default: show(help);
}
for(i in data) {
fp.write(data[i]+'\n', function(err) { if (err) throw err; });
}
}
由于case语句缺少斜杠,因此它不匹配,因此data
为空。