JS / Node尝试捕获(避免出错)

时间:2019-04-27 11:42:50

标签: javascript node.js

我在node.js中有一个功能,可以将文件从文件夹中复制到另一个文件:

function copyfile(source,target) {

    try {
        fs.createReadStream(source).pipe(fs.createWriteStream(target));
    } 

    catch(err) {
        console.log(`There was an error - ${err}`);
    }

}

copyfile('source/134.txt', 'target/1b.txt');

文件134.txt不存在,所以我希望可以在捕获区域中得到错误,但我却得到了:

events.js:183 throw er; // Unhandled 'error' event

如何更改它,以便得到指定的错误并且不会像现在那样中断?

1 个答案:

答案 0 :(得分:8)

您需要将错误事件附加到每个流:

function copyfile(source, target) {
    fs.createReadStream(source).on('error', function (e) {
        console.log(e)
    }).pipe(fs.createWriteStream(target).on('error', function (e) {
        console.log(e)
    }))
}

如果可以使用node10 +,还可以使用其他solution