【问题标题】:React-navigation installation error(following official docs). Unable to resolve module @react-navigation/native-stackReact-navigation 安装错误(遵循官方文档)。无法解析模块@react-navigation/native-stack
【发布时间】:2023-01-04 12:05:14
【问题描述】:
已经有很多问题涵盖了这个确切的错误,但我已经解决了所有这些问题,到目前为止,没有一个答案对我有用。平台是 MacOS
这是错误:
重现步骤
(遵循官方 React Navigation 文档https://reactnavigation.org/docs/getting-started/):
- 创建一个新的 expo 托管应用程序
- 导航到目录
- 启动应用程序
expo start
- **** 此时一切开始并正常工作 ****
- 安装reactnavigation(按照官方文档https://reactnavigation.org/docs/getting-started/)
-
yarn add @react-navigation/native
- 安装依赖项
-
expo install react-native-screens react-native-safe-area-context
- 用导航容器包装代码(根据文档)
- 启动应用程序
expo start
- **** 应用程序不再有效。因我之前发布的错误而失败 ****
我尝试过但没有奏效的事情
- 错误消息提供的说明(尽管我跳过了第 1 步,因为我没有安装 watchman 手表)。我希望在这里工作的主要事情是删除
node_modules和yarn.lock,但运气不好:(。与删除缓存相同
- 使用
yarn add而不是expo install来添加依赖
- 使用 npm 安装一切
- 正在更新 expo-sdk(我已经是最新的了)
- 正在重新安装一切
【问题讨论】:
标签:
reactjs
react-native
react-navigation
【解决方案1】:
所以,我实际上能够在编写它的过程中回答我自己的问题。我经常这样做,因为我确保在编写问题的过程中花几个小时尝试调试,并确保我已经涵盖了我能想到的所有尝试。
不确定官方的自我回答礼节,但这对我来说是一个非常令人沮丧的错误,所以我想我会在这里发布对我有用的内容,以防它在未来帮助其他人。
回答:
对我来说,问题与代码或应用程序本身无关,而是与 IOS 模拟器有关。强制退出模拟器并重新启动解决了错误。似乎只是 ctrl^c -> expo start -> i -> r 不足以清除模拟器的内部状态。
实际上,错误消息本身甚至有一条线索,但我错过了,因为错误看起来与我预期的非常相似。线索在于无法解析“@react-navigation/native-stack”的模块名称。在我的复制步骤中,我只使用了 NavigationContainer,因为我试图在安装任何导航器并尝试使用它们之前让它工作。
为什么要尝试解析本机堆栈导航器?我不是 100% 确定,但我的猜测是模拟器中有某种缓存没有被正确清除。我为什么这么认为?
这个问题始于我尝试在我正在处理的另一个应用程序中使用本机堆栈导航器。我很快遇到了这个错误,并且认为最好的调试方法是启动一个全新的空白应用程序并尝试让 ReactNavigation 在其中运行。我从导航包和 NavigationContainer 本身开始,一旦我什至无法正常工作,我就认为问题出在基本的 react-navigation 包安装上。我没有注意到它仍在尝试解析该本机堆栈导航器。