### 现象描述 这个错误出现在线上环境,少量用户会抛出这个未被捕获的错误,提示当前浏览器无法支持WebGL。通过机型和浏览器判断,理论上是应该支持的。 ### 链路跟踪 1. 在plugin-renderer中,用renderer-adapater的Application创建。[代码](https://github.com/eva-engine/eva.js/blob/2608773714767f35eeb3c819c37d220fa6357076/packages/plugin-renderer/lib/System.ts#L113) 2. renderer-adapter中的[Applcation](https://github.com/eva-engine/eva.js/blob/dev/packages/renderer-adapter/lib/Application.ts)继承自Pixi.js的[Application](https://github.com/pixijs/pixijs/blob/v4.8.9/src/core/Application.js) 3. Pixi.js的Application通过一个autoDetectRenderer方法识别当前系统支持情况,并自动做出选择。[代码](https://github.com/pixijs/pixijs/blob/359a131eb10485947874b9a48bc2d62c1ee0b1a1/src/core/autoDetectRenderer.js#L47) 4. 初始化WebGLRenderer构造函数,其中使用pixi-gl-core来创建上下文。[代码](https://github.com/pixijs/pixijs/blob/359a131eb10485947874b9a48bc2d62c1ee0b1a1/src/core/renderers/webgl/WebGLRenderer.js#L157) 5. 在pixi-gl-core的createContext方法中,判断是否正确创建WebGLContext,如没有则此报错。[代码](https://github.com/pixijs/pixi-gl-core/blob/911ca177572d01ea1351e9263cd55dcdc051ee3b/src/createContext.js#L20) ### 问题排查 1. 上述链路中存在一个疑点,即当第3步中使用[autoDetectRenderer](https://github.com/pixijs/pixijs/blob/359a131eb10485947874b9a48bc2d62c1ee0b1a1/src/core/utils/index.js#L308)方法识别时,已经用[isWebGLSupported](https://github.com/pixijs/pixijs/blob/359a131eb10485947874b9a48bc2d62c1ee0b1a1/src/core/utils/index.js#L308)方法判断了是可以支持WebGLContext的,但在第5步中又紧接着创建失败了。 2. autoDetectRenderer中的判断规则更加严格,只能认为这个报错在非常特殊的情况下发生,也就是前后两次获取WebGLContext上下文环境出现了突然的改变,目前无法得知是什么原因。 ### 解决方案 1. 在eva.js中,捕获这个错误(上诉链路的第一步),并再次强制使用Canvas再初始化一次。