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

运行npx expo start时出现babel-preset模块缺失错误求助

运行npx expo start时提示找不到babel-preset-metro-react-native-babel-preset

每次执行npx expo start都会触发以下错误,导致应用无法加载:

error: node_modules/expo-router/entry.js: Cannot find module 'babel-preset-metro-react-native-babel-preset'
Require stack:
- /Users/oliviazhang/den_app/den/node_modules/@babel/core/lib/config/files/plugins.js
- /Users/oliviazhang/den_app/den/node_modules/@babel/core/lib/config/files/index.js
- /Users/oliviazhang/den_app/den/node_modules/@babel/core/lib/index.js
- /Users/oliviazhang/den_app/den/node_modules/@expo/metro-config/build/transform-worker/metro-transform-worker.js
- /Users/oliviazhang/den_app/den/node_modules/@expo/metro-config/build/transform-worker/transform-worker.js
- /Users/oliviazhang/den_app/den/node_modules/metro/src/DeltaBundler/Worker.flow.js
- /Users/oliviazhang/den_app/den/node_modules/metro/src/DeltaBundler/Worker.js
- /Users/oliviazhang/den_app/den/node_modules/jest-worker/build/workers/processChild.js
- If you want to resolve "metro-react-native-babel-preset", use "module:metro-react-native-babel-preset"

Make sure that all the Babel plugins and presets you are using
are defined as dependencies or devDependencies in your package.json
file. It's possible that the missing plugin is loaded by a preset
you are using that forgot to add the plugin to its dependencies: you
can workaround this problem by explicitly adding the missing package
to your top-level package.json.

我的配置文件

package.json

{
  "name": "den",
  "main": "expo-router/entry",
  "version": "1.0.0",
  "scripts": {
    "start": "expo start",
    "reset-project": "node ./scripts/reset-project.js",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "test": "jest --watchAll",
    "lint": "expo lint"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@babel/runtime": "^7.24.8",
    "@clerk/clerk-expo": "^1.2.3",
    "@expo/vector-icons": "^14.0.2",
    "@react-native-async-storage/async-storage": "^1.24.0",
    "@react-native-community/slider": "^4.5.2",
    "@react-native-firebase/app": "^20.1.0",
    "@react-native-firebase/storage": "^20.1.0",
    "@react-navigation/native": "^6.1.17",
    "@react-navigation/stack": "^6.4.0",
    "@react-three/drei": "^9.108.3",
    "@react-three/fiber": "^8.16.8",
    "axios": "^1.7.2",
    "babel-plugin-module-resolver": "^5.0.2",
    "domexception": "^4.0.0",
    "expo": "~51.0.17",
    "expo-av": "~14.0.6",
    "expo-constants": "~16.0.2",
    "expo-font": "~12.0.7",
    "expo-gl": "~14.0.2",
    "expo-haptics": "~13.0.1",
    "expo-linear-gradient": "~13.0.2",
    "expo-linking": "~6.3.1",
    "expo-router": "~3.5.17",
    "expo-secure-store": "^13.0.2",
    "expo-splash-screen": "~0.27.5",
    "expo-status-bar": "~1.12.1",
    "expo-system-ui": "~3.0.6",
    "expo-three": "^2.2.1",
    "expo-web-browser": "~13.0.3",
    "express": "^4.19.2",
    "firebase": "^10.12.3",
    "glob": "^11.0.0",
    "querystring": "^0.2.1",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-native": "0.74.2",
    "react-native-3d-model-view": "^1.2.0",
    "react-native-animated-circular-progress": "^1.0.6",
    "react-native-circular-progress": "^1.4.0",
    "react-native-gesture-handler": "~2.16.1",
    "react-native-gl-model-view": "^1.6.0",
    "react-native-linear-gradient": "^2.8.3",
    "react-native-ratings": "^8.1.0",
    "react-native-reanimated": "~3.10.1",
    "react-native-safe-area-context": "^4.10.1",
    "react-native-screens": "^3.31.1",
    "react-native-svg": "^15.2.0",
    "react-native-track-player": "^4.1.1",
    "react-native-video": "^6.4.0",
    "react-native-web": "~0.19.10",
    "rimraf": "^6.0.1",
    "text-encoding": "^0.7.0",
    "three": "^0.166.1"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0",
    "@babel/plugin-transform-private-property-in-object": "^7.24.7",
    "@babel/preset-env": "^7.24.8",
    "@babel/preset-react": "^7.24.7",
    "@types/express": "^4.17.21",
    "@types/jest": "^29.5.12",
    "@types/node": "^20.14.10",
    "@types/react": "~18.2.45",
    "@types/react-test-renderer": "^18.0.7",
    "jest": "^29.2.1",
    "jest-expo": "~51.0.3",
    "metro-react-native-babel-preset": "^0.77.0",
    "react-test-renderer": "18.2.0",
    "typescript": "~5.3.3"
  },
  "private": true
}

babel.config.js

module.exports = function (api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo', 'metro-react-native-babel-preset'],
  };
};

已尝试的解决方法

  • 删除node_modules和package-lock.json后重新安装依赖
  • 重新安装所有依赖
  • 手动安装metro-react-native-babel-preset

以上方法均无效,请求帮助。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:24:52