执行到request向微信服务器发送请求后,返回来的值是undefined

来源:

杨洋1989

2016-08-21

如下代码第二个then返回undefined,但是用开发者调试工具上传临时素材却可以成功上传并获得mediaId,说明accesstoken应该没问题,相关代码如下:

.then(function(data){
				var url = api.upload + '&access_token=' + data + '&type=' + type;
				console.log(url,form)
				request({
					method:'POST',
					url:url,
					json:true,
					formData:form,
				})
			})
			.then(function(res){
				console.log('返回的:',res);
			})

在第一个then中打印出的url与调试工具中的url相同,说明url正确。问题可能出在form上,我将form打印出来如下:

{ media:
   ReadStream {
     _readableState:
      ReadableState {
        objectMode: false,
        highWaterMark: 65536,
        buffer: [Object],
        length: 65083,
        pipes: null,
        pipesCount: 0,
        flowing: null,
        ended: true,
        endEmitted: false,
        reading: false,
        sync: false,
        needReadable: false,
        emittedReadable: true,
        readableListening: false,
        resumeScheduled: false,
        defaultEncoding: 'utf8',
        ranOut: false,
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events: { end: [Function] },
     _eventsCount: 1,
     _maxListeners: undefined,
     path: 'C:\\Users\\Administrator\\node\\task\\day05\\wechat\\金刚狼.jpg',
     fd: 3,
     flags: 'r',
     mode: 438,
     start: undefined,
     end: undefined,
     autoClose: true,
     pos: undefined } 
 }

请老师帮忙分析下

写回答

2回答

joking_zhang

2016-08-22

var data = response.[1];
换成
var data = response.body;
试一下

0
0

Scott

2016-08-21

把 request 发出请求前后的参数,以及返回的整个数据做一个检查,不大可能微信服务器返回一个单一的值是 undefined,如果失败,会有一堆其他的数据信息错误提示等等

0
2
杨洋1989
谢谢老师,我找到错误了
2016-08-21
共2条回复

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

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

1742 学习 · 787 问题

查看课程