第五章,5.4 -Cannot read property 'then' of undefined报错,问题没有解决,再发

来源:

JaxChu

2016-06-01

第五章 5.4 生成菜单中生成微信菜单中...

报错:

Unhandled rejection TypeError: Cannot read property 'then' of undefined

574edaff0001d3f205000313.jpg574edaff0001d9e805000303.jpg

574edaff0001635805000303.jpg

574edaff0001d9e805000303.jpg

Github地址:https://github.com/zhuayu/wechat

写回答

6回答

_潇潇暮雨

2016-06-01

第72行前面加个return

1
1
JaxChu
非常感谢!get
2016-06-02
共1条回复

Scott

2016-07-07

这里等于是有一个嵌套的 promise,所以:


Wechat.prototype.fetchAccessToken = function(data){
    var that = this
    if(this.access_token && this.expires_in){
        if(this.isValidAccessToken(this)){
            return Promise.resolve(this)
        }
    }
    this.getAccessToken().then(function(data){


的这个

this.getAccessToken().then(function(data){

this.getAccessToken 前面需要加上 return,之所以有时候会跑通,是因为 fetchAccessToken 的时候,如果 token 未过期,就不会走到下一步,自然也就不会出错。

0
0

Scott

2016-06-01

还有这里:


this.getAccessToken()    
.then(function(data){


this.getAccessToken()     前面要加 rerurn ,报错信息提示是 找不到 then 这个方法,说明通过 fetchAccessToken 拿到的不是一个 Promise,应该是这里没有把这个 promise 一路返回。


1
0

mario

2016-07-07

好奇怪啊!!!按理说,之前原型上的方法调了那么多次fetchAccessToken方法,都能返回一个promise对象,而这次却不行,scott老师您能讲讲这是为什么啊

0
0

JaxChu

提问者

2016-06-01

//szimg.mukewang.com/574ef186000190cd06250634.jpg

 fetchAccessToken 我已经加过return了.

0
0

Scott

2016-06-01

把 fetchAccesstoken 的方法代码贴一下,看下是不是这个问题的导致的,需要加一个 return:


http://coding.imooc.com/learn/questiondetail/70.html



0
1
JaxChu
如果没有添加这个return 我是拿不到AccessToken的,我已经拿到了AccessToken。其它的API操作可以跑通测试成功,唯独在这个卡住,伤心啊。T.T
2016-06-01
共1条回复

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程