TypeError: Cannot read property 'type' of undefined
来源:4-3 第四天 自动回复各种消息
WiX
2016-08-13
我的content能打印
d:\wix_master\wix\imooc_wechat>node --harmony app.js listening 3000 {"access_token":"aJE6XXXXXXx-Qcqgsd84R06BXXXXXUW1sf49g2SXXXXXXXXXXXX0pS8pgWQMmV UunXXXXXXXXwL5XXXXXXSR2G_SQJEHcABAXSV","expires_in":1471077914864} { xml: { ToUserName: [ 'gh_036ba0d63aed' ], FromUserName: [ 'ohHV4xBZ2VZQ4xEA5wv21KhnrrOg' ], CreateTime: [ '1471077297' ], MsgType: [ 'text' ], Content: [ '哈哈' ], MsgId: [ '6318228880921866460' ] } } { ToUserName: 'gh_036ba0d63aed', FromUserName: 'ohHV4xBZ2VZQ4xEA5wv21KhnrrOg', CreateTime: '1471077297', MsgType: 'text', Content: '哈哈', MsgId: '6318228880921866460' } 微信的Messge : [object Object] TypeError: Cannot read property 'type' of undefined at Object.exports.tpl (D:\wix_master\wix\imooc_wechat\wechat\util.js:65:19) at Object.Wechat.reply (D:\wix_master\wix\imooc_wechat\wechat\wechat.js:82:20) at Object.<anonymous> (D:\wix_master\wix\imooc_wechat\wechat\g.js:57:26) at next (native) at Object.<anonymous> (D:\wix_master\wix\imooc_wechat\node_modules\koa-compose\index.js:28:19 ) at next (native) at onFulfilled (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:65:19) at process._tickCallback (internal/process/next_tick.js:103:7)
util.js:65
exports.tpl = function(content,message) { var info = {} var type = 'text' var fromUserName = message.FromUserName var toUserName = message.toUserName if (Array.isArray(content)) { type = 'news' } type = content.type || type //《===65行 info.content = content info.createTime = new Date().getTime() info.msgType = type info.toUserName = fromUserName info.formatMessage = toUserName return tpl.compiled(info) }
wechat.js
Wechat.prototype.reply = function() { var content = this.body var message = this.weixin var xml = util.tpl(content, message) //《==82行 this.status = 200 this.type = 'application/xml' this.body = xml }
g.js
module.exports = function(opts, handler) { //实例Wechat处理票据检查,票据更新,opts是appjs传入的config var wechat = new Wechat(opts) ………………………………………… //console.log(data.toString()) var content = yield util.parseXMLAsync(data) console.log(content) var message = util.formatMessage(content.xml) console.log(message) this.weixin = message yield handler.call(this, next) wechat.reply.call(this) //<==57行 } } }
写回答
2回答
-
Scott
2016-08-13
type = content.type || type
前面加一个合理化处理:
content = content || {}
但感觉是 reply js 里面没有把代码写对,导致传进来的 content 是 undefined,所以报错
10 -
WiX
提问者
2016-08-13
完整bash:
TypeError: You may only yield a function, promise, generator, array, or object, but the following object was passed: "undefined" at next (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:101:25) at onFulfilled (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:69:7) at D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:54:5 at Object.co (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:50:10) at Object.toPromise (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:118:63) at next (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:99:29) at onFulfilled (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:69:7) at D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:54:5 at Object.co (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:50:10) at Object.toPromise (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:118:63) at next (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:99:29) at onFulfilled (D:\wix_master\wix\imooc_wechat\node_modules\co\index.js:69:7) at tryCatcher (D:\wix_master\wix\imooc_wechat\node_modules\bluebird\js\release\util.js:16:23) at Promise._settlePromiseFromHandler (D:\wix_master\wix\imooc_wechat\node_modules\bluebird\js \release\promise.js:504:31) at Promise._settlePromise (D:\wix_master\wix\imooc_wechat\node_modules\bluebird\js\release\pr omise.js:561:18) at Promise._settlePromiseCtx (D:\wix_master\wix\imooc_wechat\node_modules\bluebird\js\release \promise.js:598:10)
022018-06-09
相似问题