替换不适用于临时文件

时间:2017-06-21 16:23:52

标签: node.js replace fs

我成功使用NPM中的replace模块(参见第一个示例)。但是,我想保留原始文件并处理一个新的(临时)文件,该文件是它的副本。这是我试过的:

使用:

var replace = require("replace");
replace({
    regex: "foo",
    replacement: "bar",
    paths: [path_in],
    recursive: true,
    silent: true,
});

不起作用:

var replace = require("replace");
var fs = require('fs');
fs.createReadStream(path_in).pipe(fs.createWriteStream(path_temp));
replace({
    regex: "foo",
    replacement: "bar",
    paths: [path_temp],
    recursive: true,
    silent: true,
});

我需要关闭pipe()吗?不知道该怎么做..

谢谢,

修改:此GitHub issue是相关的。

1 个答案:

答案 0 :(得分:1)

.pipe()是异步的,因此您需要等待.pipe()完成才能尝试使用目标文件。由于.pipe()会返回目标流,因此您可以收听closeerror个事件,以了解其完成时间:

var replace = require("replace");
var fs = require('fs');
fs.createReadStream(path_in).pipe(fs.createWriteStream(path_temp)).on('close', function() {
    replace({
        regex: "foo",
        replacement: "bar",
        paths: [path_temp],
        recursive: true,
        silent: true,
    });
}).on('error', function(err) {
    // error occurred with the .pipe()
});