不在https、localhost等不安全的环境中访问时,crypto.randomUUID 是不可用的。
如果这个是由第三方库引起的,如果不影响使用可以不解决,如果影响到使用,暴力解决办法为修改node_modules里面的代码。
记得清除构建工具(例如vite)的缓存(例如./node_modules/.vite文件夹)
下面以prefect框架为例,该错误是由于在docker容器中部署修改后的prefect-ui,从外部访问引起的:
全局替换 ${crypto.randomUUID()}
为 ${randomUUID()}
在使用到 crypto.randomUUID() 的js文件中定义 randomUUID() 方法
function randomUUID() {const hexDigits = '0123456789abcdef';let uuid = '';for (let i = 0; i < 36; i++) {if (i === 8 || i === 13 || i === 18 || i === 23) {uuid += '-';} else if (i === 14) {uuid += '4';} else if (i === 19) {uuid += hexDigits[(Math.floor(Math.random() * 4) + 8)];} else {uuid += hexDigits[Math.floor(Math.random() * 16)];}}return uuid;
}
清除vite缓存,重新运行即可
rm -r ./node_modules/.vite
npm run serve