作为Gulp构建过程的一部分,我获取一个外部RSS提要,将其转换为JSON,并将其写入一个文件。有时RSS提要不可用,这会导致构建过程返回错误:
错误:套接字在connResetException处挂起(internal/errors.js:607:14)
在TLS中,您可以在客户端上创建一个套接字。
在TLSSocket. emitter(事件.js:327:22)上执行此操作
在TLSSocket.EventEmitter. emitter(域.js:529:15)中,您可以使用一个或多个事件来发送消息。
在endReadableNT(内部/流/可读.js:1327:12)
js:80:21在进程中的时间点和拒绝(internal/process/task_queues.js:80:21)
这个任务是作为gulp.parallel
操作的一部分运行的。它对进程的其余部分并不重要,我希望即使这个任务失败,构建也能继续。
我尝试实现如下错误处理:
// RSS to JSON
const { parse } = require('rss-to-json');
const fs = require('fs');
function parseRss(cb) {
try {
return parse('https://feeds.buzzsprout.com/1794525.rss')
.then(rss => {
fs.writeFileSync('./site/_data/podcast.json', JSON.stringify(rss, null, 3));
});
} catch(e) {
console.log(e);
}
}
但是它似乎什么都没做。我该如何修改上面的任务以确保错误不会停止整个操作呢?
2条答案
按热度按时间ddrv8njm1#
@matt123miller的回答很有帮助,但并没有让我走到这一步。不过,它确实让我走上了正确的轨道。在尝试使用他的解决方案并未能获得预期行为之后,我尝试将函数改为异步的,然后重新添加try / catch逻辑:
这招奏效了!
jm2pwxwz2#
因为gulp任务需要返回一个Promise,所以你试图捕捉错误的尝试确实会抑制错误,但你的任务不会继续。这应该像从你的catch块中返回一个Promise一样简单。
然后,您的任务应该会继续。