Angular应用部署Vercel失败:npm run build报错及Node版本差异问题
Angular应用部署Vercel失败解决方案
问题根源
Vercel默认使用的Node.js版本(v18.13.0)和本地开发环境(v16.16.0)不一致,导致构建时触发ERR_OSSL_EVP_UNSUPPORTED错误。这是因为Node.js 18+默认禁用了旧版OpenSSL哈希算法,而你的Angular项目依赖的Webpack版本不兼容新算法。
解决方案
方案1:让Vercel使用和本地一致的Node.js版本
在项目根目录创建.nvmrc文件,写入:
16.16.0
或者在package.json里添加engines字段:
{ "engines": { "node": "16.16.0" } }
Vercel会自动识别这两个配置,用指定的Node版本构建,消除版本差异带来的问题。
方案2:修改构建命令兼容Node.js 18+
如果不想切换Node版本,直接修改package.json里的build命令,加上兼容环境变量:
{ "scripts": { "build": "NODE_OPTIONS=--openssl-legacy-provider ng build" } }
这个变量会强制Node.js使用旧版OpenSSL哈希算法,解决兼容性报错。
额外检查
确认Vercel构建设置的两个关键项:
- Build Command:设为
npm run build(如果改了命令就用修改后的) - Output Directory:Angular项目一般是
dist/[你的项目名],要和本地ng build生成的目录一致
内容的提问来源于stack exchange,提问作者Franta Mrazak
相关产品推荐
相关产品推荐

