搜索

首页  >  问答  >  正文

node.js - Nodejs报错无法读取未定义的属性“调用”

在中间件中这么写:
wechat.reply.call(this);
在wechat中的reply函数是这么写的:

Wechat.prototype.reply = function(){
    console.log('bbbbb');
    var content = this.body;
    var message = this.weixin;
    var xml = util.tpl(content,message)

    console.log(xml);
    this.status = 200
    this.type = 'application/xml'
    this.body = xml
    return
}

然后就报错

TypeError: Cannot read property 'call' of undefined
      at Object.<anonymous> (C:\www\koa\wechat\wechat\g.js:54:16)
      at Generator.next (<anonymous>)
      at onFulfilled (C:\www\koa\wechat\node_modules\co\index.js:65:19)
      at process._tickCallback (internal/process/next_tick.js:109:7)
      

话说,call函数不是在原生js中就能用吗,为什么我在调用的时候报错了呢?

而且,百度了一下,有这种错误的人特别少……
问大神:通常是什么时候会报这个错?报错的原因是什么?

PHP中文网PHP中文网2707 天前1290

全部回复(3)我来回复

  • 大家讲道理

    大家讲道理2017-06-29 10:11:20

    举个栗子 a.call(this,null),但是此时 aundefined,就会报你遇到的错误
    确认有 wechat.apply 这个方法么

    回复
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-29 10:11:20

    在中间件中这么写:
    wechat.reply.call(this);在wechat中的reply函数是这么写的:

    wechat实例应该没有值,你在调用之前打印一下看看。

    console.log(wechat.reply)

    回复
    0
  • 怪我咯

    怪我咯2017-06-29 10:11:20

    如果x.callx未定义,则其下的.call无法访问,所以你先确定一下wechat.reply是否已经定义。
    另外,注意在JS中,变量名是区分大小写的。

    回复
    0
  • 取消回复