RN 0.71.x升级后npx react-native-asset报错及自动运行问题求助
问题解决方案
一、解决Metro打包器报错:JSON value 'N' of type NSString cannot be converted to NSNumber
这个报错源于React Native 0.71.x对JSON格式校验更严格,代码或配置文件中存在用字符串'N'/'Y'表示布尔值的情况,而系统期望标准布尔类型true/false。解决步骤如下:
- 排查所有JSON配置文件(如
app.json、package.json、自定义配置文件),以及iOS项目中通过JSON传递的配置项,将所有'N'/'Y'替换为true/false。 - 检查
metro.config.js中的自定义配置,确保传递给Metro的参数没有字符串类型的布尔值,统一使用原生布尔类型。 - 清理缓存并重新构建:
# 重置Metro缓存 npx react-native start --reset-cache # iOS项目清理缓存并重装依赖 cd ios && pod deintegrate && pod install && cd .. # Android项目清理构建缓存 ./gradlew clean
二、实现npx react-native-asset自动运行
通过npm/yarn脚本钩子或启动脚本合并即可实现自动执行,提供两种方案:
方案1:安装依赖后自动运行
修改项目根目录package.json,在scripts中添加postinstall钩子,每次执行npm install/yarn install后会自动触发该命令:
{ "scripts": { "postinstall": "npx react-native-asset", // 保留原有其他脚本 } }
方案2:启动项目前自动运行
若希望每次启动Metro前执行该命令,可将其合并到start脚本中:
{ "scripts": { "start": "npx react-native-asset && npx react-native start", // 保留原有其他脚本 } }
注:若使用pnpm,需确保
postinstall脚本能正常触发,可参考pnpm官方规则调整配置。
内容的提问来源于stack exchange,提问作者Tirzah
相关产品推荐
相关产品推荐

