fs.writeFileSync输出一个空文件

时间:2017-06-24 11:31:47

标签: javascript

function populateWithKeywordsAndIds(list) {
    var newList = [];
    for (let i = 0; i < list.length; i++) {
        //some computation goes in here that i think is not relevant
        newList[x] = y;
    }
    fs.writeFileSync('./firstJSONWritten.js', newList);
    console.log(newList);
    return newList;
}

populateWithKeywordsAndIds(someList);

运行之后,firstJSONWritten.js是一个空文件。 对promulateWithKeywordsAndIds(someList)的调用发生在promise的.then()方法的主体中。

1 个答案:

答案 0 :(得分:0)

writeFile/writeFileSync未定义为接受标准数组作为数据。您可以传递一个字符串,BufferUint8Array,但不仅仅是数组。所以你得到奇怪的结果并不奇怪。 (可能试图将该数组转换为缓冲区,但如果是这样,那么它是未定义的行为,谁知道它是如何解释内容的......)

旁注:

  

对promulateWithKeywordsAndIds(someList)的调用发生在promise的.then()方法的主体中。

然后没有理由使用writeFile的同步版本;你已经进行异步处理。请改用writeFile,以避免不必要地占用等待I / O的JavaScript线程。