无法在React Native App中解析模块

max*_*ver 27 react-native

我在React Native中遇到错误,说它无法解析模块.它说某个文件夹不存在,但路径不准确.它告诉我,Directory /Users/user/Desktop/RNApp/app/app/containers不存在.我不知道第二个应用程序来自哪条路径.我的目录看起来像这样

在此输入图像描述

这就是我导出容器组件的方式 app/containers/index.js

export RNAppNavigator from './Navigator/RNAppNavigator'
export SplashContainer from './Splash/SplashContainer'
export AppContainer from './App/AppContainer'
Run Code Online (Sandbox Code Playgroud)

所以我应该能够像import {AppContainer} from '~/containers正确的那样导入它们吗?我没有遇到任何其他组件的问题.只是AppContainer.

谢谢!

max*_*ver 105

react-native start --reset-cache解决了这个问题.https://github.com/facebook/react-native/issues/1924

  • 请将此答案设为正确答案 (10认同)
  • 这会抛出 - ERROR Metro Bundler can't Listen on port 8081 (2认同)
  • @sandeeptalabathula 这个问题是由于地铁在某个航站楼运行造成的,关闭它就可以了。 (2认同)

Dar*_*ius 8

我因为这个错误而失去了生存的意愿,RN 告诉我,./Foo当它就在那里时,导入的文件不存在!

实际的潜在错误不是打字错误,而是实际上在另一个./Foo导入的文件中。

当心。如果您在JSX任何地方写作(例如 in ./Bar):

<Bar>...</Bar>

那么你必须有:

import * as React from 'react' (或类似)

存在于该文件 ( ./Bar) 中。

当语法糖(尖括号)被转换时,它天真地吐出类似的东西:

React.createComponent(...)

如果React没有明确导入,这个引用将是无效的,因此这个依赖文件的评估随后会失败。

不幸的是,结果是./Foo(以及./Bar)在您的应用程序中将不可用,因此 RN 会说module not found和 之类的无用内容Indeed, none of these files exist

希望有帮助。

附:如果文件之间存在循环依赖关系,您也会遇到类似的痛苦!好好玩!


Pab*_*rde 7

如果您在使用纯组件或类时遇到类似的问题,请确保您使用.js扩展而不是.jsx


小智 6

对我来说,使用expo,我只需重新启动 expo 即可。ctrl + cyarn start/或expo start以及在 ios 模拟器或您的设备上运行,无论您使用哪个模拟器进行测试。


Lov*_*rma 5

我遇到了同样的问题,我通过以下步骤修复了该问题:

1-> 删除node_modules: rm -rf node_modules

2-> 删除 ios 文件夹内的 Pods 文件夹: cd ios rm -rf Pods

3-> 清除地铁边界: rm -rf ${TMPDIR:-/tmp}/metro-*

4-> 重置缓存 npx react-native start --reset-cache

现在通过以下命令安装node_modules和pods

1-> npm 安装

2-> cd ios

3-> 吊舱安装

4-> npx 反应本机运行 ios

这对我有用,谢谢


Mat*_*Aft 0

看来您的错误来自外部 index.js 文件,而不是这个文件。您是否将其导入为'./app/containers'?因为它应该是'./containers'