Node.js - 编写了空文件,但为啥呢?
Posted
技术标签:
【中文标题】Node.js - 编写了空文件,但为啥呢?【英文标题】:Node.js - Empty file written, but why?Node.js - 编写了空文件,但为什么呢? 【发布时间】:2012-04-04 21:30:12 【问题描述】: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; );
【问题讨论】:
您的意思可能不是if(error)
,而是if(err)
。您还使用了两次i
,但这不应该有任何副作用。通过这些更改,我仍然无法重现效果。使用my demo program,两个文件都被写入并且是相同的。你能提供一个complete 的例子吗?您的系统上是否出现my demo program 的问题?
我发现了问题所在。我在代码的长格式版本中缺少一个斜杠。很抱歉浪费您的时间,感谢您的关注。
@phihag - 很好。我写了错误的代码试图举个例子。非常感谢。
您介意自己写一个答案并详细说明您所做的更改吗?这样,任何有相同或类似问题的人也可以从这个问题中受益。谢谢!
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);数据 = []; switch(file_name) case pn+ "/theme/file1": --- snip -- break; // // 错误从这里开始:注意没有'/'前缀 // case pn+ "theme/file2": --snip-- break;默认值:显示(帮助); for(i in data) fp.write(data[i]+'\n', function(err) if (err) throw err; );
【参考方案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
为空。
【讨论】:
以上是关于Node.js - 编写了空文件,但为啥呢?的主要内容,如果未能解决你的问题,请参考以下文章