React Native Expo Go突发报错:TypeError: commands[command] is not a function
解决Expo运行
npx expo start --tunnel时的commands[command] is not a function报错 问题场景
学习React Native时用Expo Go测试,运行npx expo start --tunnel触发以下报错,更新npm包后问题仍存在:
Error: /Users/tejassathe/Programming/ReactNativeLearning/node_modules/expo-updates/build-cli/cli.js:46 commands[command]().then((exec) => exec(commandArgs)); ^ TypeError: commands[command] is not a function at Object.<anonymous> (/Users/tejassathe/Programming/ReactNativeLearning/node_modules/expo-updates/build-cli/cli.js:46:18) at Module._compile (node:internal/modules/cjs/loader:1740:14) at Object..js (node:internal/modules/cjs/loader:1905:10) at Module.load (node:internal/modules/cjs/loader:1474:32) at Function._load (node:internal/modules/cjs/loader:1286:12) at TracingChannel.traceSync (node:diagnostics_channel:322:14) at wrapModuleLoad (node:internal/modules/cjs/loader:234:24) at Module.require (node:internal/modules/cjs/loader:1496:12) at require (node:internal/modules/helpers:135:16) at Object.<anonymous> (/Users/tejassathe/Programming/ReactNativeLearning/node_modules/expo-updates/bin/cli.js:3:1) Node.js v23.5.0
解决方案
1. 降级Node.js到LTS版本
你用的Node v23是开发预览版,很多工具还没完全适配,换成稳定的LTS版本(比如v20.x)大概率能解决:
- 用nvm管理版本的话,执行:
nvm install 20 nvm use 20 - 没有nvm的话,直接去Node官网下载LTS版本安装
- 重启终端后再运行
npx expo start --tunnel
2. 适配Expo SDK版本重装expo-updates
expo-updates版本和当前Expo SDK不匹配是常见原因:
- 打开
package.json查看expo字段的SDK版本 - 安装对应版本的expo-updates(比如SDK 50对应
expo-updates@~0.24.10,版本对应关系可参考Expo官方SDK更新日志):npm install expo-updates@你的SDK对应版本 - 清除Expo缓存:
npx expo cache:clear - 重新启动项目
3. 重置依赖环境
如果以上方法无效,彻底重置依赖:
- 删除依赖文件夹和锁文件:
rm -rf node_modules rm package-lock.json - 重新安装依赖:
npm install - 带清除缓存启动项目:
npx expo start --tunnel --clear
内容的提问来源于stack exchange,提问作者pattern_hunter
相关产品推荐
相关产品推荐

