请稍等 ...
×

采纳答案成功!

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

console.log(reply)media_id显示为undefined?

weixin.js代码

else if(content==='5'){
                       var data=yield wechatApi.uploadMaterial('image',__dirname+'/2.jpg')
           reply={
            type:'image',
            mediaId:data.media_id,
           
           }
         console.log(reply);

tpl.js代码

<% } else if(msgType==='image'){ %>
                 	<Image>
<MediaId><![CDATA[<%= content.mediaId %>]]></MediaId>
</Image>
                 <% } else if(msgType==='voice'){ %>

wechat.代码

Wechat.prototype.uploadMaterial = function(type,filepath){
  var that=this;
  var form={//构造一个表单
    media : fs.createReadStream(filepath)
  }


  return new Promise(function(resolve,reject){//Promise 实例
   that
      .fetchAccessToken()
      .then(function(data){
        var url=api.upload+'access_token='+data.access_token+'&type='+type;

    request({method:'POST',url:url,formData:form,json:true})
    .then(function(response){//请求,
      var _data=response.body;//response[1]
     if(_data){
      resolve(_data)
     }else{
      throw new Error('Upload material fails')
     }
      
    })
     .catch(function(err){
      reject(err);
     })
      })
  })
}

控制台输出

https://img1.sycdn.imooc.com/szimg//5746f9ad000179bb04590230.jpg


正在回答

2回答

Scott 2016-05-26 22:11:05

windows 系统下面应该是需要拼接一下正确的路径 __dirname+'/2.jpg') 改成 path.join(__dirname, '/2.jpg')  试试


然后打印下 data,不要打印 reply 看看拿到的 data 是什么数据

1 回复 有任何疑惑可以回复我~
  • 提问者 qq_十五人五_0 #1
    console.log(data)打印出40001,发现是票据的问题,然后改了下票据的代码,再试下就打印出了正确的返回值,谢谢老师!~试了下path.join(__dirname, '/2.jpg')和('image',__dirname+'/2.jpg')两个方法都是可以的
    回复 有任何疑惑可以回复我~ 2016-05-27 09:49:57
  • 提问者 qq_十五人五_0 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2016-05-27 09:50:03
AssassinX 2016-08-27 18:27:44

还有一种可能是根本就没有获取到需要的data。我就遇到过Api接口未授权的情况,返回的data有这么一段:errMsg: 'api unauthorized'

0 回复 有任何疑惑可以回复我~
  • Scott #1
    接口未授权,是测试号么,另外在发请求以前打印下 accesstoken 看看是不是传过去的token有问题
    回复 有任何疑惑可以回复我~ 2016-08-27 18:37:00
  • 朋友你解决了吗?
    回复 有任何疑惑可以回复我~ 2016-10-18 20:31:55
  • Mayi007 #3
    我是用了公众号测试号,为什么还是返回errMsg: 'api unauthorized',不是应该有权限了吗
    回复 有任何疑惑可以回复我~ 2016-11-22 18:36:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信