You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS Amplify部署Expo 50.0.5 React Native Web应用构建失败求助

问题描述
  • 本地环境:Node v21.1.0、npm 10.2.0、Expo ~50.0.5
  • 本地状态:React Native Web应用运行正常,执行npx expo export -p web可成功生成dist文件
  • 构建故障:AWS Amplify配置Node 18构建时,触发GLIBC_2.27和GLIBC_2.28版本缺失错误,导致构建失败
相关配置文件

本地package.json(核心依赖片段)

{
  "name": "your-app-name",
  "version": "1.0.0",
  "main": "expo-router/entry",
  "scripts": {
    "start": "expo start",
    "build": "npx expo export -p web",
    "web": "expo start --web"
  },
  "dependencies": {
    "expo": "~50.0.5",
    "expo-router": "~3.4.6",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-native": "0.73.2",
    "react-native-web": "~0.19.6"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0",
    "@types/react": "~18.2.45",
    "typescript": "^5.3.0"
  }
}

AWS Amplify构建配置(amplify.yml)

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - nvm use 18
        - npm install
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: dist
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
完整错误日志
> npm run build

> your-app-name@1.0.0 build
> npx expo export -p web

Starting Metro Bundler
Failed to construct transformer:  Error: /root/.nvm/versions/node/v18.19.0/lib/node_modules/expo/node_modules/@expo/cli/node_modules/signal-exit/node_modules/which/bin/which: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by /root/.nvm/versions/node/v18.19.0/lib/node_modules/expo/node_modules/@expo/cli/node_modules/signal-exit/node_modules/which/bin/which)
/root/.nvm/versions/node/v18.19.0/lib/node_modules/expo/node_modules/@expo/cli/node_modules/signal-exit/node_modules/which/bin/which: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /root/.nvm/versions/node/v18.19.0/lib/node_modules/expo/node_modules/@expo/cli/node_modules/signal-exit/node_modules/which/bin/which)
    at Module._extensions..node (node:internal/modules/cjs/loader:1395:18)
    at Module.load (node:internal/modules/cjs/loader:1149:32)
    at Module._load (node:internal/modules/cjs/loader:980:12)
    at Module.require (node:internal/modules/cjs/loader:1163:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at Object.<anonymous> (/root/.nvm/versions/node/v18.19.0/lib/node_modules/expo/node_modules/@expo/cli/node_modules/signal-exit/node_modules/which/index.js:7:13)
    at Module._compile (node:internal/modules/cjs/loader:1275:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1329:10)
    at Module.load (node:internal/modules/cjs/loader:1143:32)
    at Module._load (node:internal/modules/cjs/loader:984:12)
error Command failed with exit code 1.
info Visit https://docs.npmjs.com/cli/commands/npm-run for available options.
解决方案

方案1:升级Amplify构建环境的Node版本到20+

AWS Amplify支持Node 20环境,和本地版本更接近,能规避GLIBC版本不兼容问题。修改amplify.yml:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - nvm use 20
        - npm install
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: dist
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*

方案2:清理缓存并重新安装依赖

Amplify的缓存可能留存了旧依赖包,导致GLIBC不兼容。在preBuild阶段添加清理命令:

preBuild:
  commands:
    - nvm use 18
    - rm -rf node_modules package-lock.json
    - npm install --no-cache

方案3:使用Expo预构建调整构建流程

  1. 本地执行npx expo prebuild --platform web生成web原生构建文件
  2. 修改package.json的build脚本,直接用webpack构建(需确保webpack配置适配Expo Web):
"scripts": {
  "build": "webpack --mode production"
}

方案4:使用自定义构建镜像

选择包含高版本GLIBC的镜像(比如Ubuntu 20.04),在amplify.yml中指定:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - nvm use 18
        - npm install
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: dist
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
build:
  image:
    name: ubuntu:20.04

内容的提问来源于stack exchange,提问作者user1424876

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:07:42