首页 > 解决方案 > JS / Node try catch (避免出错)

问题描述

我在 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

我怎样才能改变它,所以我得到指定的错误,而不是像现在这样中断?

标签: javascriptnode.js

解决方案


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

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+ 还有其他不错的解决方案


推荐阅读