解决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
posted @ 2024-05-04 19:16  aminor  阅读(1162)  评论(0编辑  收藏  举报
/**/ /**/