[插件报错] Cocos Creator 3.5.2 版本 addComponent: Failed to get class [记录+解决]

[插件开发 · 报错]

Cocos Creator 3.5.2 版本 addComponent: Failed to get class [记录+解决]

[godxkey] 自动绑定指定资源到组件代码内 | Cocos Store

报错截图如下

解决方案一

关闭 Cocos Creator 3.5.2 编辑器, 再重新打开,
目前已测试 Ctrl + R 刷新编辑器界面 (无用),
如果项目不大, 还是重启 Cocos Creator 3.5.2 编辑器来的方便

解决方案二

采取代码内预先刷新, 等一段时间后, 再加载就可以正常执行逻辑了, 参考代码如下

async function reloadTsFile(){
    // asset-db
    // reimport-asset
    // 重新导入资源
    // urlOrUUID {string} 资源的 URL 或者 UUID
    // refresh-asset
    // 刷新一个资源所在的 url 位置,删除资源会被销毁,新增资源会导入
    // urlOrUUID {string} 资源的 URL 或者 UUID
    const reloadTsFile_000=await  Editor.Message.request("asset-db", "reimport-asset", "affbab09-3f8e-4c76-a3e5-a89181728a06");
    const reloadTsFile_001=await  Editor.Message.request("asset-db", "refresh-asset", "affbab09-3f8e-4c76-a3e5-a89181728a06");
};

// 当扩展被启动的时候执行
exports.load = function () {
  reloadTsFile();
  // var options = {
  //     name: 'binder',
  //     method: 'logScene',
  //     args: [],
  // };
  // Editor.Message.request('scene', 'execute-scene-script', options).then(function (version) {
  //     console.log("成功获取引擎版本号:", version)//cc.ENGINE_VERSION
  // });
};

// 当扩展被关闭的时候执行
exports.unload = function () {
  reloadTsFile();
};

PS:

  • 在实际测试中, 在 Cocos Creator 3.4.0 编辑器 和 Cocos Creator 3.6.0 编辑器中, 不会有此报错的问题
  • 初步猜测是 Cocos Creator 3.5.2 编辑器并没有合理刷新出 runtime-resource 资源文件所导致
  • 更底层的原因就不太清楚了, 不知各位大佬可否讲解一二 ?

[ 开发环境 ] Cocos Creator 3.5.2 + Windows

按照上文的方案二写的代码, 虽然有用, 但是并没有达到比较理想的效果

不知道各位大佬是否有更好的方式呢 ? 小弟在此恭候佳音 :smiley:

这个报错之前没发现, 可能是我之前直接新建的 Cocos 3.5.2 插件写的原因, 所以我这个开发的时候就没报过这个错误, 新工程也是先放入的插件再进行的启动, 所以一直没出现, 我还以为没有, 在此感谢 晓衡哥 的帮忙测试, 再此建议大家开发完插件后, 多进行几种类型的空项目测试 :smiley: