插件脚本里面有个 SceneBase 类继承了 cc.Component。
在游戏中定义了个组件脚本
@ccclass('GameScene')
export class GameScene extends lcc.SceneBase {}
如果插件脚本是ES2015,那么调试是没有问题的。
但是发布后,错误如下;
Class constructor SceneBase cannot be invoked without 'new' TypeError: Class constructor SceneBase cannot be invoked without 'new'
锁定错误位置:
_export("GameScene", GameScene = (_dec = ccclass('GameScene'), _dec2 = property(Prefab), _dec3 = property(Node), _dec4 = property(Node), _dec5 = property(Camera), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_lcc$SceneBase) {
_inheritsLoose(GameScene, _lcc$SceneBase);
function GameScene() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
// 就是这一句代码
_this = _lcc$SceneBase.call.apply(_lcc$SceneBase, [this].concat(args)) || this;
_initializerDefineProperty(_this, "cube", _descriptor, _assertThisInitialized(_this));
初步判断因为,插件脚本是ES2015的,所以必须使用new的方式构造。
如果发布后把插件脚本换ES5版本的,就一切正常了。
这样就有一个很麻烦的问题, 编辑器里面需要使用ES2015的, 发布后需要使用ES5的,就想问问,能在构建的时候自动转换吗?