修改rn-pdf-reader-js的peerDependencies适配Expo 47是否可行?
问题解答
能否修改peerDependency范围解决问题?
- 可以,但手动修改
package-lock.json不是长久方案:- 直接把
package-lock.json里rn-pdf-reader-js@4.1.1的expo peer依赖范围改成>=33.0.x <50.0.x,能暂时消除安装时的兼容性警告,不用每次加--legacy-peer-deps。 - 但要注意,后续执行
npm install或更新依赖时,这个修改可能被覆盖。更可靠的方式是用npm 8.3+支持的overrides字段,在项目根目录的package.json里添加:
- 直接把
"overrides": { "rn-pdf-reader-js": { "expo": ">=33.0.x <50.0.x" } }
这样npm会自动强制覆盖该包的peer依赖要求,无需手动修改lock文件。
关于“Cannot read properties of null (reading 'children')”报错
- 这个错误和peer依赖的关联性不大,大概率是依赖缓存损坏或lock文件状态异常导致的:
- 先执行以下步骤排查:
- 删除项目根目录的
node_modules文件夹和package-lock.json文件 - 清理npm缓存:
npm cache clean --force - 重新执行
npm install(若未配置overrides,仍需加--legacy-peer-deps)
- 删除项目根目录的
- 一般情况下,清理缓存和重新安装就能解决这个报错。
- 先执行以下步骤排查:
长期方案建议
- 优先尝试升级rn-pdf-reader-js到最新版本:检查该包的最新版本是否已经更新了Expo peer依赖范围,适配Expo 47及以上版本,从根源解决兼容性问题。
- 如果升级不可行,就用
overrides字段配合npm install,或者继续使用--legacy-peer-deps,毕竟你的项目在Expo Go里运行正常,说明实际功能没有兼容性问题,只是npm的peer依赖校验机制导致的安装警告。
内容的提问来源于stack exchange,提问作者Aatish Parson
相关产品推荐
相关产品推荐

