Javascript 未处理的拒绝类型错误:无法读取属性';toString';未定义的

Javascript 未处理的拒绝类型错误:无法读取属性';toString';未定义的,javascript,node.js,error-handling,bluebird,Javascript,Node.js,Error Handling,Bluebird,我正在向我的API发送base64编码的令牌。这是一个来自谷歌的身份证。当字符串有效时,一切正常,但实际上我正在尝试设置正确的错误处理。向字符串中添加一些额外字符会引发TypeError 我已经记录了编码和缓冲区的结果,并且都已定义。有人知道我做错了什么吗 功能(有效负载){ var config=request.getAsync('https://accounts.google.com/.well-known/openid-configuration') .然后(函数(结果){ var re

我正在向我的API发送base64编码的令牌。这是一个来自谷歌的身份证。当字符串有效时,一切正常,但实际上我正在尝试设置正确的错误处理。向字符串中添加一些额外字符会引发TypeError

我已经记录了编码和缓冲区的结果,并且都已定义。有人知道我做错了什么吗

功能(有效负载){
var config=request.getAsync('https://accounts.google.com/.well-known/openid-configuration')
.然后(函数(结果){
var response=JSON.parse(result.body);
return request.getAsync(response.jwks_uri);
})
.然后(函数(结果){
返回JSON.parse(result.body);
})
.catch(语法错误,函数(e){
投掷e;
})
var头=新承诺(函数(解析、拒绝){
var segments=payload.id_token.split('.');
试一试{
解析(JSON.parse(base64urlDecode(segments[0]));
}捕获(e){
拒绝(e);
}
})
.catch(语法错误,函数(e){
投掷e;
})
return Promise.join(配置、头、函数(响应、头){
返回新承诺(功能(解决、拒绝){
var键=“”;
对于(var i=0;i}
如果您
console.log(新缓冲区(base64urlUnescape(str),'base64')),它会返回什么?
返回缓冲区,而不是说未定义。也检查了unescape之后的str本身。缓冲区甚至会抛出错误吗?在网上找不到关于它的任何信息。日志返回这很奇怪。你确定堆栈跟踪准确地指向这一行吗?我已经将代码简化为只指向那个块和那个块;这就是错误发生的地方。从基本代码开始,然后再次切换所有内容。那里发生了错误。我传递的令牌工作正常,但当我在前面加上123时,它就会出现