升级3.6.1打包后,prefab报TypeError: Cannot read properties of null (reading '__prefab')

  • Creator 版本: 3.6.1

  • 之前哪个版本是正常的:3.5.2

  • 重现概率: 100%

打包web手机端,微信小游戏无论是远程包和非远程包,load prefab 时 都会报这个错


prefab的节点树是没问题的,prefab上cocos自带的组件也没问题,唯独是自定义的脚本为null,感觉是脚本没加载好就挂上去了

打包时编辑器报了很多script的错,但是vscode里面是没有报错的,毕竟3.5.2也没问题


其中第二条就是我讲的那个prefab,prefab名字叫做AssetUI,它上面也绑了一个叫AssetUI的自定义component,详细信息如下:

打包后,我在cc.cbc99.js文件里面加了一个条件作调试,如果component为空的话就addcomponent,可以打印出AssetUI的组件信息。



这样自定义的脚本算是正常导入了吗?感觉是脚本打包编译没问题的,只是挂不了prefab上

方便提供一下demo吗?

我尝试过制作一个demo,但是并不能重现。我也试过将library,temp等文件夹删除重新编译,报错依然存在。所以我不能确定具体是哪里出了问题,如果能简单地做出一个重现DEMO,我自己就会把这个问题规避掉打包上线了。
现在就是被这个问题掐住了,这是公司项目,进度要紧,正在尝试回退3.5.2

方便的话调试一下构建进程:打开构建调试工具,在工具中打开引擎代码(ctrl+p ,输入bundled/index.js),在如图所示位置打上断点,这里应该可以看到资源报你截图错误的流程image ,然后把报错前后的一些堆栈,变量信息截出来看看


找不到这个index.js文件呢

右上角设置,关闭一下source map看看


请问是哪个?

左边,Sources类别,第三个,enable JavaScript source maps

已经把enable JavaScript source maps的勾勾取消了,然后呢?还是找不到


是这个文件吗?但是打不开,Unable to fetch script source.

方便的话我远程调试一下看看?

好的,如何远程

我私信你了

经过排查,定位到问题:自定义组件加载失败,导致没有其参与构建,所以报了找不到资源的错。
加载失败原因:

  1. Renderer2D接口废弃后脚本需要升级
  2. 脚本插件中引用了cc.sys.localStorage接口,但在3.6构建环境中找不到改接口导致脚本报错;
1赞

3.6.2大概什么时候出来呢?

大概在月底

  1. Renderer2D接口废弃后脚本需要升级 怎么升级? 没有说怎么解决这个问题啊 是不是不能升级上来

碰到同样的升级问题,cc.sys.localStorage这个解决了就可以了吗?

月底版本能解决这个问题吗?升级都升级不了啊

把cc.sys.localStorage改为localStorage