繁体   English   中英

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

[英]Node.js - Empty file written, but why?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM