解决crypto.randomUUID is not a function
不在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