-
Creator 版本:2.0.9
-
目标平台:cocos自身
-
详细报错信息,包含调用堆栈:
TypeError: target.getComponent is not a function
at cc_Button._getTargetSprite (D:\cocos\2.0.9\CocosCreator\resources\engine\bin.cache\dev\cocos2d\core\components\CCButton.js:380:37)
at cc_Button._applyTarget (D:\cocos\2.0.9\CocosCreator\resources\engine\bin.cache\dev\cocos2d\core\components\CCButton.js:386:37)
at cc_Button.notify (D:\cocos\2.0.9\CocosCreator\resources\engine\bin.cache\dev\cocos2d\core\components\CCButton.js:187:30)
at cc_Button.val.set (D:\cocos\2.0.9\CocosCreator\resources\engine\bin.cache\dev\cocos2d\core\platform\preprocess-class.js:44:28)
at cc_Button.n.set [as target] (D:\cocos\2.0.9\CocosCreator\resources\app.asar\editor\page\scene-utils\lib\asset-watcher.js:1:782)
at a (D:\cocos\2.0.9\CocosCreator\resources\app.asar\editor\page\scene-utils\lib\asset-watcher.js:1:1099)
at CallbacksInvoker.invoke (D:\cocos\2.0.9\CocosCreator\resources\engine\bin.cache\dev\cocos2d\core\platform\callbacks-invoker.js:167:29)
at D:\cocos\2.0.9\CocosCreator\resources\app.asar\editor\page\scene-utils\engine-extends\asset-library-extends.js:1:1357
at CCLoader. (D:\cocos\2.0.9\CocosCreator\resources\engine\bin.cache\dev\cocos2d\core\platform\CCAssetLibrary.js:64:25)
at D:\cocos\2.0.9\CocosCreator\resources\engine\bin.cache\dev\cocos2d\core\load-pipeline\CCLoader.js:139:46
- 重现方式:
项目切换时100%出现
出现原因已经查明,当切换项目时(比如点开子域,再点开主域),就会直接出现这个报错。选择原因不明,但会抽取一个button(大概率为一个固定的button)的target会变为
。无论是让这个target本身就为空还是不为空,都会被这个东西所替换并且报错。测试时主要的替换对象是通过复制出来的button节点,偶尔会出现其他button的target也被替换的情况。且每次替换只会出现1次。同事做过demo测试没有这个问题,区别在于我在切换项目时,引擎会自动进行一次疑似刷新操作,而同事的引擎没有这个问题(同2.0.9)。这个问题会导致onload没法执行被跳过继而执行start,希望引擎组留一下看看是什么问题。