当前位置: 首页 > 后端技术 > Node.js

SignalRAbortcontroller的解决方案是Undefined

时间:2023-04-04 00:25:42 Node.js

网站使用的是SignalR。用户在使用vivo手机自带的浏览器时,点击没有任何反应。用数据线连接电脑。在Chrome中调试后报错:AbortControllerisUndefined。谷歌了一圈,发现这篇文章SignalRAbortControllerisUndefinedonOlderBrowsers,基本解释了原因并给出了解决方案。是因为老浏览器支持Fetch,而AbortController不支持,所以报这个错。换个判断就行,只要不支持其中一个,就不要使用FetchHttpClient方法。在node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js中将if(typeoffetch!=="undefined"||Platform.isNode){更改为:if((typeoffetch!=="undefined"&&typeofAbortController!=="undefined")||Platform.isNode){因为直接修改了node_modules,官方库没有修复,需要自己patch。安装patch-package:yarnaddpatch-package--dev保存模块:npxpatch-package@microsoft/signalr在package.json的脚本中添加运行命令:"scripts":{"postinstall":"patch-package","补丁包":"补丁包"},