错误信息如下:
PS D:\coding\java\javascript\vue\test1\vue-base> npm run dev
> vue-base@0.0.0 dev
> vite
error when starting dev server:
TypeError: crypto$2.getRandomValues is not a function
at resolveConfig (file:///D:/coding/java/javascript/vue/test1/vue-base/node_modules/vite/dist/node/chunks/dep-DDxXL6bt.js:54261:16)
at async _createServer (file:///D:/coding/java/javascript/vue/test1/vue-base/node_modules/vite/dist/node/chunks/dep-DDxXL6bt.js:43855:18)
at async CAC. (file:///D:/coding/java/javascript/vue/test1/vue-base/node_modules/vite/dist/node/cli.js:750:20)
PS D:\coding\java\javascript\vue\test1\vue-base> node -v
v16.20.2
PS D:\coding\java\javascript\vue\test1\vue-base>
分析后,原因如下:
由于 Vite 使用了 Web Crypto API 中的方法 getRandomValues(),
而这些方法在较旧版本的 Node.js 中可能未被完全支持或实现方式不同所致
解决方法:
- 如果无法升级 Node.js 版本,可以尝试将 Vite 版本降级到 5.x 版本。例如,将 Vite 版本改为 5.4.11,并锁定版本以防止在流水线中不兼容。
- 修改项目中的 package.json 文件,将 Vite 版本指定为 5.4.11:
操作如下:
"devDependencies": {
"vite": "5.4.11"
}
再次npm install,正常了。