我利用集群来推迟应用程序中的工作负载,而工作人员可能要做的一项任务就是编写一个文件。但是我在获取工作线程写入文件时遇到了一些麻烦。以下是我使用的测试用例:
这样可以正常工作:
var fs = require('fs');
var path = require('path');
var request = require('request');
var filepath = path.join(__dirname, "image.jpg");
request({url:"http://i.imgur.com/InnEHyN.jpg"}).pipe(fs.createWriteStream(filepath));
var filepath2 = path.join(__dirname, "test.txt");
fs.writeFile(filepath2, "Sample Text");
但是,当我尝试从工作线程执行这些操作时,它们不会发生。我没有从控制台得到任何错误或输出,它似乎无声地失败。
var fs = require('fs');
var path = require('path');
var request = require('request');
var cluster = require('cluster');
if(cluster.isMaster) {
cluster.fork();
}else {
var filepath = path.join(__dirname, "image.jpg");
request({url:"http://i.imgur.com/InnEHyN.jpg"}).pipe(fs.createWriteStream(filepath));
var filepath2 = path.join(__dirname, "test.txt");
fs.writeFile(filepath2, "Sample Text");
}
另外,如果我使用fs-extra
找到here库,我可以调用fse.ensureFileSync(filepath)
,然后创建文件。但是,即使有一个空文件,我似乎无法通过管道或使用fs.writeFile
函数写入它。