Node.js – 空文件写入,但为什么?

TL; DR为什么写第一个文件,但是剩下的文件是空的?

我在Node.js中有一个循环的文件string的数组列表。 每个string都表示其各自目录中的不同文件。 该数组包含三个需要创build三个独立文件的值。 第一个文件被创build并写入后,第二个和第三个文件被创build,但保持为空。 下面是代码的简短版本。 任何帮助深表感谢。

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 

======解决scheme=====

 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; }); } } 

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语句缺less一个斜线,所以不匹配,因此data是空的。