请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

微信自定义菜单开发,启动服务控制台报错Cannot read property 'then' of undefined

replay.js

wechatApi.deleteMenu().then(function () {
       return wechatApi.createMenu(menu)
   })
   .then(function (msg) {
       console.log(msg);
   })

---------------------------------------------------

wechat.js

Wechat.prototype.deleteMenu = function () {
   var that = this;

   return new Promise(function (resolve, reject) {
       that
           .fetchAccessToken()
           .then(function (data) {————————————————————>报错then未定义,之前其他使用then的地方没有错误
               var url = api.menu.delete + 'access_token=' + data.access_token;

               request({"url": url, "json": true}).then(function (response) {
                   var _data = response["body"];

                   //console.log(response);
                   //return;
                   if (_data) {
                       resolve(_data);
                   } else {
                       throw new Error('deleteMenu fails');
                   }
               }).catch(function (err) {
                   reject(err);
               })
           })
   });
}


正在回答 回答被采纳积分+3

4回答

Scott 2017-02-02 09:25:10

var that = this;

    this.getAccessToken()


这里加 return


return this.getAccessToken()

0 回复 有任何疑惑可以回复我~
Scott 2017-01-23 08:34:08

fetchAccessToken 以及构造函数  Wechat 里面代码也贴一下,看看是不是没有正确的返回的 promise,少了一个 return

0 回复 有任何疑惑可以回复我~
提问者 沙漠江河 2017-02-03 19:51:46

好的知道了,问题解决了。谢谢老师

0 回复 有任何疑惑可以回复我~
提问者 沙漠江河 2017-01-31 11:43:09

Scott老师你好!你是说哪里少了return,以下代码是fetchAccessToken 以及构造函数  Wechat;

function Wechat(opts) {

    var that = this;

    this.appID = opts.appID;

    this.appSecret = opts.appSecret;

    this.getAccessToken = opts.getAccessToken;

    this.saveAccessToken = opts.saveAccessToken;

    this.getTicket = opts.getTicket;

    this.saveTicket = opts.saveTicket;


    this.fetchAccessToken();

}


Wechat.prototype.fetchAccessToken = function(data) {

    //debugger;

    var that = this;

    this.getAccessToken()

        .then(function(data) {

            try {

                data = JSON.parse(data);

            } catch (e) {

                return that.updateAccessToken();

            }

            if (that.isValidAccessToken(data)) {

                return Promise.resolve(data);

            } else {

                return that.updateAccessToken();

            }

        })

        .then(function(data) {

            //that.access_token = data.access_token;

            //that.expires_in = data.expires_in;

            that.saveAccessToken(data);

            return Promise.resolve(data);

        })

}

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信