无法在React Native App中解析模块

时间:2016-12-05 23:09:57

标签: react-native

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

enter image description here

这就是我在app/containers/index.js

中导出容器组件的方法
export RNAppNavigator from './Navigator/RNAppNavigator'
export SplashContainer from './Splash/SplashContainer'
export AppContainer from './App/AppContainer'

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

谢谢!

22 个答案:

答案 0 :(得分:88)

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

答案 1 :(得分:5)

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

答案 2 :(得分:3)

根据您的文件夹结构,尝试在index.js中导入:

import { AppContainer } from './App/AppContainer';

如果您正在使用命名导出,那就是您正在执行:

export class AppContainer [...]

如果您使用默认导出,例如:

export default class AppContainer [...]

对象解构将失败。你必须改为:

import AppContainer from './App/AppContainer';

答案 3 :(得分:3)

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

实际的潜在错误不是拼写错误,但实际上是{strong>导入./Foo的其他文件。

小心点。如果你在任何地方写JSX(例如在./Bar中):

<Bar>...</Bar>

然后你必须:

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

出现在该文件中(./Bar)。

当语法糖(带角度的括号)被描绘出来时,天真地吐出了类似的东西:

React.createComponent(...)

如果React未导入显式,则此引用将无效,因此此依赖文件的评估随后失败。

不幸的是,结果是./Foo(以及./Bar)在您的应用中无法使用,因此RN会说无用的内容,例如module not foundIndeed, none of these files exist

希望有所帮助。

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

答案 4 :(得分:2)

确保在package.json中定义了模块,请使用npm install,然后尝试react-native link

答案 5 :(得分:1)

我遇到了完全相同的问题 - 修正为babel-preset-react-native-stage-0,而不是babel-preset-react-native

答案 6 :(得分:1)

对我来说,使用 expo ,我只需要重新启动expo。 ctrl + cyarn startexpo start,然后在ios模拟器或您的设备上运行,无论您使用哪个测试。

答案 7 :(得分:1)

我也遇到了同样的问题,现在解决了。如果您遇到纯组件或类的问题,请确保您使用的是 .js 扩展名而不是 .jsx。

答案 8 :(得分:0)

这是我的项目目录结构

enter image description here

我使用这样的导入

enter image description here

它正在工作,别忘了在斜杠前添加点 例如“ ./src/container/home/profile/index”

答案 9 :(得分:0)

使用这个对我有用npm cache add <package name><@version>

示例:

npm cache add react-native-paper@0.1.9

答案 10 :(得分:0)

  1. Reset Metro Bundler cache: rm -rf /tmp/metro-bundler-cache-*
  2. react-native start --reset-cache

答案 11 :(得分:0)

我遇到了这个错误,然后我意识到我的 package.json 文件大部分是空的。首先确保您拥有所有依赖项。

使用 yarn add DEPENDENCY_NAME 添加依赖项。

答案 12 :(得分:0)

我正在使用 react-native CLI,我只是重新启动 rn-cli,pieView.holeRadiusPercent = 0.10 停止进程然后 ctrl+c

答案 13 :(得分:0)

如果您最近在git中进行了名称更改,则仅包括更改文件大小写。 MacOS将忽略此更改。因此,您将必须转到控制台中的文件并更改名称。例如,如果名称更改为menu.js-> Menu.js,请在提取请求后使用终端进行手动重命名。

mv menu.js Menu.js

答案 14 :(得分:0)

就我而言,我需要使用扩展文件路径导入

即:

错误:import MyComponent from "componentFolder/myComponent";

右:import MyComponent from "../myAppFolder/componentFolder/myComponent";

这两个选项均未显示Typescript错误,但只有最后一个有效。

答案 15 :(得分:0)

删除节点文件夹并重新启动对我有用(重新启动后运行npm install)

答案 16 :(得分:0)

重新加载该应用程序,导致此错误的原因是在其他本地库(native-base)等指向的库中以响应本机依赖性对文件位置进行了更改。

要解决此问题,您需要查看提到的文件并将文件位置更改为正确的位置。

答案 17 :(得分:0)

看起来你的错误来自外部index.js文件,而不是这个。你是以'./app/containers'的形式导入这个吗?因为它应该只是'./containers'

答案 18 :(得分:0)

如果文件路径正确,则检查其中一个文件是否包含

import React from './node_modules/react';

替换为

import React, { Component } from 'react';

答案 19 :(得分:0)

硬件->删除所有内容和设置 为我完成了工作(其他事情没有完成)。

答案 20 :(得分:0)

我能够通过添加文件扩展名“.js”来解决此问题。我正在使用Intellij并创建了一个js文件,但它没有文件扩展名。当我做一个折射器重命名并将我的组件从“List”更改为“List.js”时,本机会知道如何解决它。

答案 21 :(得分:-1)

使用这个对我有用 npm cache add package name@version 示例:npm 缓存添加 react-native-paper@0.9.1