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

Expo React Native项目遇ReferenceError及启动失败问题求助

Expo项目启动失败问题解决

环境版本信息

node --version #v16.20.2
npm --version #8.19.4
nvm --version #0.39.1
expo --version #6.3.10
npx react-native --version #15.1.3

npm start 报错日志

ReferenceError: ReadableStream is not defined
    at Object.<anonymous> (/Users/projectfolder/Documents/project/myprojectname/node_modules/undici/lib/web/fetch/response.js:528:3)
    at Module._compile (node:internal/modules/cjs/loader:1198:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
    at Module.load (node:internal/modules/cjs/loader:1076:32)
    at Function.Module._load (node:internal/modules/cjs/loader:911:12)
    at Module.require (node:internal/modules/cjs/loader:1100:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at Module._compile (node:internal/modules/cjs/loader:1198:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)

expo start 报错日志

│   The global expo-cli package has been deprecated.                        │
│                                                                           │
│   The new Expo CLI is now bundled in your project in the expo package.    │
│   Learn more: https://blog.expo.dev/the-new-expo-cli-f4250d8e3421.        │
│                                                                           │
│   To use the local CLI instead (recommended in SDK 46 and higher), run:   │
│   › npx expo <command>                                                    │
│                                                                           │
└───────────────────────────────────────────────────────────────────────────┘
Starting project at /Users/projectfolder/Documents/project/myprojectname
Some dependencies are incompatible with the installed expo package version:
 - expo-updates - expected version: ~0.27.1 - actual version installed: 0.26.19
 - react-native - expected version: 0.76.7 - actual version installed: 0.76.6
Your project may not work correctly until you install the correct versions of the packages.
To install the correct versions of these packages, please run: expo doctor --fix-dependencies,
or install individual packages by running expo install [package-name ...]
ExpoMetroConfig.loadAsync is not a function
TypeError: ExpoMetroConfig.loadAsync is not a function
    at runMetroDevServerAsync (/Users/projet/.nvm/versions/node/v16.20.2/lib/node_modules/expo-cli/node_modules/@expo/dev-server/src/MetroDevServer.ts:86:45)
    at startDevServerAsync (/Users/projet/.nvm/versions/node/v16.20.2/lib/node_modules/expo-cli/node_modules/xdl/src/start/startDevServerAsync.ts:75:77)
    at startAsync (/Users/projet/.nvm/versions/node/v16.20.2/lib/node_modules/expo-cli/node_modules/xdl/src/start/startAsync.ts:84:41)

项目package.json内容

{
  "name": "myprojectname",
  "version": "1.0.0",
  "main": "./AppEntry.js",
  "scripts": {
    "start": "expo start --dev-client",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "@expo-google-fonts/birthstone": "^0.2.3",
    "@expo-google-fonts/cookie": "^0.2.3",
    "@expo-google-fonts/dancing-script": "^0.2.3",
    "@expo-google-fonts/great-vibes": "^0.2.3",
    "@expo-google-fonts/inter": "^0.2.3",
    "@expo-google-fonts/lexend": "^0.2.3",
    "@expo-google-fonts/pacifico": "^0.2.3",
    "@expo-google-fonts/satisfy": "^0.2.3",
    "@expo-google-fonts/squada-one": "^0.2.3",
    "@expo-google-fonts/whisper": "^0.2.3",
    "@expo/vector-icons": "^14.0.2",
    "@gorhom/bottom-sheet": "^5.0.6",
    "@react-native-community/datetimepicker": "8.2.0",
    "@react-native-community/netinfo": "^11.4.1",
    "@react-native-community/slider": "4.5.5",
    "@react-native-picker/picker": "2.9.0",
    "@react-navigation/bottom-tabs": "^7.2.0",
    "@react-navigation/drawer": "^7.0.19",
    "@react-navigation/native": "^7.0.12",
    "@react-navigation/native-stack": "^7.1.13",
    "@react-navigation/stack": "^7.0.18",
    "expo": "~52.0.28",
    "expo-camera": "~16.0.14",
    "expo-checkbox": "~4.0.1",
    "expo-font": "~13.0.2",
    "expo-image-picker": "~16.0.5",
    "expo-linear-gradient": "~14.0.2",
    "expo-location": "~18.0.5",
    "expo-splash-screen": "~0.29.21",
    "expo-status-bar": "~2.0.1",
    "expo-updates": "~0.26.15",
    "lodash": "^4.17.21",
    "lottie-react-native": "7.1.0",
    "moment": "^2.30.1",
    "patch-package": "^8.0.0",
    "postinstall-postinstall": "^2.1.0",
    "react": "18.3.1",
    "react-native": "0.76.6",
    "react-native-gesture-handler": "~2.20.2",
    "react-native-get-random-values": "^1.11.0",
    "react-native-gifted-chat": "^2.6.5",
    "react-native-otp-entry": "^1.7.3",
    "react-native-paper": "^5.12.5",
    "react-native-reanimated": "~3.16.1",
    "react-native-safe-area-context": "4.12.0",
    "react-native-screens": "~4.4.0",
    "react-native-webview": "13.12.5",
    "uuid": "^11.0.5"
  },
  "devDependencies": {
    "@babel/core": "^7.25.2",
    "@react-native-community/cli": "^15.1.3",
    "@types/lodash": "^4.17.14",
    "@types/react": "~18.3.12",
    "typescript": "^5.3.3"
  },
  "jest": {
    "moduleNameMapper": {
      "lottie-react-native": "<rootDir>/__mocks__/lottieMock.js"
    }
  },
  "private": true
}

解决步骤

1. 升级Node.js版本

Expo SDK 52要求Node.js版本≥18,当前使用的Node 16不支持ReadableStream全局对象,导致undici库报错。执行以下命令升级:

nvm install 18
nvm use 18

2. 清理依赖缓存并重新安装

rm -rf node_modules package-lock.json
npm install

3. 修复依赖版本不兼容问题

根据报错提示,expo-updates和react-native版本与当前expo SDK不匹配,执行命令自动修复:

npx expo doctor --fix-dependencies

4. 使用本地Expo CLI启动项目

全局expo-cli已废弃,必须使用项目本地集成的CLI,执行:

npx expo start --dev-client

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:44:59