求助:Next.js在GitHub Actions构建失败,报ERR_OSSL_EVP_UNSUPPORTED错误
解决Next.js在GitHub Actions中构建失败的ERR_OSSL_EVP_UNSUPPORTED问题
问题分析
- 错误日志显示实际运行的Node版本是
v18.12.0,而非你指定的16.16.0,说明工作流中Node版本配置未生效。 ERR_OSSL_EVP_UNSUPPORTED错误源于Node.js 17+默认启用的OpenSSL 3.0算法,与Next.js内置的旧版Webpack不兼容。
修复步骤
步骤1:修正工作流的Node版本配置
你的工作流存在重复checkout步骤,且第三方yarn action未继承setup-node的环境。修改工作流文件如下:
on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install NodeJS uses: actions/setup-node@v3 with: node-version: '16.16.0' cache: 'yarn' # 可选:缓存依赖加速构建 - name: Install dependencies run: yarn install - name: Lint React App run: yarn lint - name: Build React App run: yarn build
关键修改点:
- 移除重复的
actions/checkout@v3步骤。 - 替换
borales/actions-yarn为原生run命令,确保使用setup-node配置的Node版本。 - 可选添加
cache: 'yarn'缓存依赖,减少构建耗时。
步骤2:添加兼容环境变量(若仍报错)
若确认使用Node16后仍出现SSL错误,在build步骤添加环境变量:
- name: Build React App run: yarn build env: NODE_OPTIONS: "--openssl-legacy-provider"
也可在job级别设置环境变量,对所有步骤生效:
jobs: build: runs-on: ubuntu-latest env: NODE_OPTIONS: "--openssl-legacy-provider" steps: # ... 其他步骤保持不变
内容的提问来源于stack exchange,提问作者Sadaf Sid
相关产品推荐
相关产品推荐

