导入expo-location报Unable to resolve module ./ExpoLocation错误求解
Expo Location 模块解析错误修复方案
问题相关代码
触发报错的导入代码如下:
import * as Location from 'expo-location';
报错在Expo Go启动时触发,核心错误信息为:
无法从路径
C:\Users\USER\location\node_modules\expo-location\build\Location.js解析模块./ExpoLocation,对应路径下所有适配后缀的ExpoLocation文件均不存在。
错误栈指向Location.js第二行的import ExpoLocation from './ExpoLocation';语句,同时报错信息中包含ABI45_0_0标识。
问题根因
expo-location安装版本与当前项目使用的Expo SDK版本、本地Expo Go客户端版本不匹配。
报错中的ABI45_0_0说明当前运行环境为Expo SDK 45,若安装的expo-location版本高于该SDK适配的版本范围,就会缺失对应SDK版本的原生桥接文件ExpoLocation,导致Metro打包时无法解析模块。
修复步骤
按顺序执行以下操作:
清除项目现有依赖与缓存
- 删除项目根目录下的
node_modules文件夹 - 删除对应包管理器的锁文件:npm对应
package-lock.json,yarn对应yarn.lock,pnpm对应pnpm-lock.yaml
- 删除项目根目录下的
安装SDK 45适配版本的expo-location
npm执行:
npm install expo-location@~14.3.0yarn执行:
yarn add expo-location@~14.3.0注:14.3.x是expo-location官方适配Expo SDK 45的版本区间,禁止安装更高版本
清除Expo打包缓存并启动服务
npx expo start -c校验本地Expo Go版本
若启动后仍报错,卸载手机端现有Expo Go,重新安装对应SDK 45的Expo Go客户端,再扫码连接开发服务即可。
额外排查项
如果上述步骤执行后问题仍存在,检查是否做过自定义原生link操作:
- 若之前执行过
expo prebuild或手动修改过原生目录配置,执行npx expo prebuild --clean清除自定义原生配置后,再重新启动Expo Go开发服务即可,Expo Go环境不支持自定义编译的原生模块,仅能使用SDK预置的原生模块能力。
内容的提问来源于stack exchange,提问作者yeinp
相关产品推荐
相关产品推荐

