[BUG提交]特定情况下报错getComponent: Type must be non-nil

定位了半天,总算发现了确定的原因。
状况: 在某Component子类中的getter方法中(或在getter中被调用到的方法中),设定一个默认值为null的成员变量(无论这个成员变量是否属于getter所属的这个类)指向某对象时,报错。
版本: 2.0.9p1MAC版 稳定复现

贴代码举例:
类一:

var bullet = require(‘bullet’)
cc.Class({
extends: cc.Component,

properties: {
    aBullet : {
        get : function () {
            return bullet.createBullet(this);
        }
    }
},

});

类二:

var bullet = cc.Class({

properties: {
    owner : null,
},
statics : {
    createBullet(owner){
        var b = new bullet()
        b.owner = owner;
        return b;
    }
}    

});

编辑器中hero.prefab文件上挂载了cc.Node, cc.Sprite和hero组件, 当打开hero.prefab时, 编辑器报错:

getComponent: Type must be non-nil
at Object.cc.errorID (/Applications/CocosCreator.app/Contents/Resources/engine/bin/.cache/dev/cocos2d/core/CCDebug.js:167:16)
at getConstructor (/Applications/CocosCreator.app/Contents/Resources/engine/bin/.cache/dev/cocos2d/core/utils/base-node.js:29:20)
at cc_Node.getComponent (/Applications/CocosCreator.app/Contents/Resources/engine/bin/.cache/dev/cocos2d/core/utils/base-node.js:399:35)
at HTMLElement.query-node-info (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor/builtin/scene/panel/messages/scene-query.js:1:1331)
at Object.e._dispatch (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor-framework/lib/renderer/panel.js:1:1941)
at EventEmitter.o.on.s (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor-framework/lib/renderer/ipc.js:1:2917)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:204:7)

后来发现是button 只填写脚本节点,没有指定函数的问题

那你遇到的算是提示不明确,我这边的这个bug,即使开个新工程也是稳定复现。

提示没问题啊,
owner没有给类型,默认值为null,在属性检查器上显示owner属性时会调用
base-node.js中的getConstructor方法,传进来的参数时null,自然就会报错

你在properties中定义owner的时候给下type值就没有问题了,比如给个cc.Component的type,自然就没有报错了