使用Expo创建新React Native应用报JSON解析错误如何解决
报错触发原因
这个报错的核心逻辑是:create-expo-app 执行 npm pack expo-template-blank@latest --dry-run 命令时,预期拿到标准JSON格式的包元信息,但实际命令返回的内容首字符是e(通常是Error开头的纯文本错误提示),不符合JSON格式导致解析失败。
突发出现、前一天还能正常使用的场景下,触发原因基本和本地expo-cli、node/npm安装损坏无关,具体常见诱因:
- npm源配置异常:使用的第三方npm源同步故障、缓存失效,请求包信息时返回了纯文本/HTML格式的错误页,而非预期的JSON数据
- npm 8.x版本兼容问题:部分8.x小版本在网络波动时,会把错误日志直接输出到标准输出流,污染本该返回JSON的结果内容
- 本地npm缓存损坏:存储的模板包元信息缓存损坏,读取时拿到非JSON格式的脏数据
- 本地代理/网络拦截:开了系统代理但npm未正确配置代理、或内网策略拦截npm请求,返回了网络错误的纯文本提示
可行解决方案(按解决概率从高到低排序)
- 方案1:清空npm缓存并重置官方源
执行以下命令后重新尝试创建项目,绝大多数突发该问题都可以通过这个方式解决:npm cache clean --force npm config set registry https://registry.npmjs.org/ - 方案2:指定固定模板版本绕开latest标签拉取逻辑
动态拉取latest版本模板时的dry-run校验是触发解析错误的环节,直接指定固定版本的模板即可跳过该异常:
命令中模板版本号可以替换为你需要使用的Expo SDK对应版本即可。npx create-expo-app@latest my-app --template expo-template-blank@46.0.0 - 方案3:切换包管理器绕开npm 8.x的兼容问题
安装yarn后指定用yarn创建项目,避开npm输出异常的问题:npm install -g yarn npx create-expo-app my-app --use-yarn - 方案4:清理npm代理配置
如果本地开了代理/在内网环境,先清除npm的错误代理配置再重试:npm config delete proxy npm config delete https-proxy
注:之前尝试重装expo-cli、升级node/npm没有效果是正常的,该问题不属于本地安装的客户端损坏,问题出在拉取模板环节的返回内容异常。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

