今天在使用vite创建一个react项目,然后安装完依赖,在使用npm run dev启动的时候报了个错误,这里记录下错误以及解决过程。
报错信息如下:
error when starting dev server:
TypeError: crypto.hash is not a function
at getHash (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:2834:21)
at getLockfileHash (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:11716:9)
at getDepHash (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:11719:23)
at initDepsOptimizerMetadata (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:11180:53)
at createDepsOptimizer (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:34593:17)
at new DevEnvironment (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:35357:109)
at Object.defaultCreateClientDevEnvironment [as createEnvironment] (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:35776:9)
at _createServer (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/chunks/dep-Bsx9IwL8.js:28359:132)
at async CAC.<anonymous> (file:///C:/Users/vein_/Documents/MyProjects/pmnotes/node_modules/.pnpm/vite@7.0.0/node_modules/vite/dist/node/cli.js:573:18)
ELIFECYCLE Command failed with exit code 1.
package.json的内容如下:
{
"name": "pm-test",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"react": "^19.1.0",
"react-dom": "^19.1.0"
},
"devDependencies": {
"@eslint/js": "^9.29.0",
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
"@vitejs/plugin-react-swc": "^3.10.2",
"eslint": "^9.29.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"globals": "^16.2.0",
"typescript": "~5.8.3",
"typescript-eslint": "^8.34.1",
"vite": "^7.0.0"
}
}
第一反应就是自己的node版本太低了,用node -v看了下,是16的版本,赶紧用nvm升级到了18,然后删除掉node_modules,重新安装了依赖,再运行,还是报错。 没办法,只能去网上找下答案了,网上说最新的vite对于node的版本要求是20以上(可能是我落后了,我一直觉得18的版本已经是比较新的了,没想到现在24都出来了)。
最新版本的 vite 需要高版本 node
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
然后使用nvm直接安装了一个22版本,然后重新安装依赖并运行,运行成功!!!
参考文档node.js - 为什么使用Vite创建的项目在npm run dev时报错crypto.hash不是函数? - SegmentFault 思否