gpt4 book ai didi

javascript - Node.js - 写入空文件,但为什么呢?

转载 作者:行者123 更新时间:2023-11-30 05:59:13 25 4
gpt4 key购买 nike

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

最佳答案

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 为空。

关于javascript - Node.js - 写入空文件,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9786393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com