未单独安装@react-navigation/elements却可使用useHeaderHeight的问题咨询
问题解答
为什么@react-navigation/elements不在package.json却存在于node_modules?
@react-navigation/native 6.x版本自身的依赖声明里,已经把@react-navigation/elements列为直接依赖。当你安装@react-navigation/native时,npm/yarn会自动拉取所有它依赖的子包并安装到node_modules中,这类间接依赖不会出现在你的项目package.json里,只有主依赖(@react-navigation/native)会被记录。
权限受限无法单独安装,能不能继续这样使用?
短期可以正常用。只要你当前项目运行稳定,且不升级@react-navigation/native的版本,这个内置的@react-navigation/elements版本会保持固定,不会影响现有功能。
未来可能出现的问题
- 版本兼容风险:如果后续升级@react-navigation/native,它依赖的@react-navigation/elements版本可能会更新,甚至不排除未来版本的主包不再依赖这个子包的情况,到时你的代码会直接报「模块找不到」的错误;
- 环境一致性问题:在新机器部署、CI/CD流水线构建时,虽然包管理工具会自动拉取间接依赖,但如果@react-navigation/native的依赖范围(比如版本号区间)有变化,可能拉到和当前环境不兼容的elements版本,导致运行异常;
- 代码规范检测问题:Sonar报严重错误是因为静态分析工具检测到你使用了项目package.json未声明的依赖,认为这是潜在的依赖缺失风险。虽然当前运行正常,但长期会影响代码合规性检查,也会给其他开发者造成困惑(不知道这个包的来源)。
补充:重装node_modules后仍存在的原因
每次执行npm install或yarn install时,包管理工具都会重新解析@react-navigation/native的依赖树,自动安装它所需的@react-navigation/elements,所以重装后这个包会再次出现在node_modules里。
内容的提问来源于stack exchange,提问作者Saketh Kota
相关产品推荐
相关产品推荐

