我编写了一个函数,它返回异步逐行读取文件的promise,但问题是如果文件不存在,就会抛出错误,应用程序崩溃。我已经将代码包围在try-catch块中,但是代码执行从未进入catch块,而是终止。
其次,我可以拒绝promise,然后从promise中返回json对象吗?
像reject({success:false})
const fs = require('fs');
const readline = require('readline');
class fileParser{
readPolicyFile = function(filePath, fileName) {
return new Promise((resolve, reject) => {
try {
let response = {};
let readInterface = readline.createInterface({
input: fs.createReadStream(`${filePath}/${fileName}`),
terminal: false
});
readInterface
.on('line', line => {
// Do processing here to create the response
})
.on('close', () => {
resolve(response);
});
} catch(err){
console.log("Inside catach block");
reject(err);
}
})
}
}
module.exports = new fileParser();
你将永远不会看到在catach块
行,因为createReadStream
不会抛出一个正常的错误。当它想抛出一个错误时,它会发出错误
事件。
您需要的是处理createReadStream的
错误
(而不是
readInterface的
)
const fs = require('fs');
const readline = require('readline');
class fileParser {
readPolicyFile = function (filePath, fileName) {
return new Promise((resolve, reject) => {
let response = {};
// create a stream and handle it's error event
const stream = fs.createReadStream(`${filePath}/${fileName}`);
stream.on('error', (error) => {
reject(error);
// or reject({success: false}), but why call reject with data
// If you don't want to handle error of readPolicyFile function, just call resolve({success: false})
});
let readInterface = readline.createInterface({
input: stream,
terminal: false
});
readInterface
.on('line', line => {
// Do processing here to create the response
})
.on('close', () => {
resolve(response);
});
})
}
}
module.exports = new fileParser();
错误: 我的前端vue应用程序正在和后端正在我正在请求axios从vue文件到后端的get请求。 这就是我的终点 这个错误的原因是什么?
我正在使用Firebase云消息服务辅助角色处理后台推送通知。 当通知(其中包含一些数据的URL)被点击,我想要么: 焦点窗口,如果它已经在所需的URL 导航到URL并聚焦它,如果已经有一个活动的选项卡打开 如果上述条件都不满足,则打开URL的新窗口 点1和3与下面的SW代码一起工作。 出于某种原因,第2点不起作用。promise被拒绝,原因是: 我认为这可能是由于缺少https,但从我的阅读来看
本文介绍了单个promise组合器: 但我没有看到的是,一种运行所有promise的方法,但不是在个人promise被拒绝时短路。我如何确保所有的promise都得到履行,但我能处理拒绝和所有promise的解决?
我正在尝试编写一个jasmine测试,它有一个间谍, 是一个许诺列表。前几次承诺是拒绝,最后一次是成功。虽然测试顺利通过,但Node抱怨如下: 我的代码非常直接:我创建一个间谍,将它注入到我的代码中,调用我的代码,这将循环调用我的间谍直到它不拒绝,然后监视它被调用了5次。间谍是这样的: 被测试的代码在它的链中最后一个空的 来验证我没有引起那里的问题。AFICT,问题是Node看到我在执行 ,并认为
我试图构建一些代码,但我得到了以下两个错误: (节点:12909)unhandledpromiserejectionwarning:nosuchsessionerror:试图在没有建立连接的情况下运行命令。throwdecodederror(/home/mattheW/node_modules/selenium-webdriver/lib/error.js:550:15)在parseHttpRes
我得到这个错误- (节点:18420)未处理的PromisejectionWarning:TypeError:无法读取未定义的属性“name” (节点:18420)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请