【问题标题】:Error when try to import axios on iOS platformiOS 平台导入 axios 报错
【发布时间】:2018-05-04 13:52:41
【问题描述】:

我使用 Windows 10 创建了一个 React-Native 项目,它在 Android 上完美运行。

我将文件复制到我的 iMac 并在 iOS 平台上运行该项目,但是当我尝试在 iOS 中运行该项目时出现以下错误:

error: bundling failed: Error: Unable to resolve module `axios` from `/Users/fabio/react/VirtusVSTS/src/components/Login.js`: Module does not exist in the module map

This might be related to https://github.com/facebook/react-native/issues/4968
To resolve try the following:
1. Clear watchman watches: `watchman watch-del-all`.
2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.
3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  
4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.
at ModuleResolver.resolveDependency (/Users/fabio/react/VirtusVSTS/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:158:1476)
at ResolutionRequest.resolveDependency (/Users/fabio/react/VirtusVSTS/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:92:16)
at DependencyGraph.resolveDependency (/Users/fabio/react/VirtusVSTS/node_modules/metro/src/node-haste/DependencyGraph.js:271:4465)
at dependencies.map.relativePath (/Users/fabio/react/VirtusVSTS/node_modules/metro/src/DeltaBundler/traverseDependencies.js:379:19)
at Array.map (<anonymous>)
at resolveDependencies (/Users/fabio/react/VirtusVSTS/node_modules/metro/src/DeltaBundler/traverseDependencies.js:378:16)
at /Users/fabio/react/VirtusVSTS/node_modules/metro/src/DeltaBundler/traverseDependencies.js:203:33
at Generator.next (<anonymous>)
at step (/Users/fabio/react/VirtusVSTS/node_modules/metro/src/DeltaBundler/traverseDependencies.js:296:307)
at /Users/fabio/react/VirtusVSTS/node_modules/metro/src/DeltaBundler/traverseDependencies.js:296:467

问题与轴导入有关。

我尝试在 iMac 中创建一个新项目并在其上导入轴。效果很好。

但现在我不知道我在 Windows 上创建的项目发生了什么,为什么它无法在 iMac 上导入轴模块。

我运行了错误消息中出现的所有步骤来尝试解决问题,但它不起作用。

我该如何解决这个问题?

【问题讨论】:

  • Axios 也适用于 iOS。我不知道这是否会有所帮助,但每次我遇到你上面提到的错误时,我 1. 关闭 react-packager 终端的所有实例,2. 删除 node_modules 文件夹 3. 运行 npm install 然后 react-native run- ios.
  • 我已经按照 React-Native 屏幕中显示的错误步骤进行了操作。还是不行。
  • 您确定 axios 在您的 package.json 中并且存在于您的 node_modules 文件夹中吗?怎么导入?
  • @needsleep 我现在检查我的 node_modules 文件夹,令我惊讶的是,项目中没有 axios 文件夹。我将文件添加到 git,但是当我使用我的 windows pc 时我没有包含 node_modules 文件夹,然后我在我的 Mac 中克隆了 git 存储库并使用 npm install,由于某种原因没有创建 axios 文件夹。现在我将整个 node_modules 文件夹添加到 git 存储库并在 Mac 中克隆,它现在可以工作了。谢谢你。 ps:我需要手动安装一些jest模块
  • 永远不要将 node_modules 添加到 git。 package.json 的目的是让任何开发人员只需运行 npm install 即可安装所有必要的依赖项。 axios 文件夹丢失可能是因为它安装为“npm install axios”而不是“npm install axios --save””,这就是你的 package.json 中缺少它的原因。你应该添加你提到的缺少的 jest 模块同样的方式“npm install somePackageName --save-dev”

标签: react-native axios


【解决方案1】:

我的 node_modules 文件夹中不存在 axios 模块文件夹。来自用户 @needsleep 的 cmets 帮助我理解为什么我的 React Native 项目中没有 axios 模块。 我开始使用 Yarn 并用它来安装 axios 模块(yarn add axios),它现在可以工作了。

【讨论】:

    【解决方案2】:

    删除 axios 并使用 yarn 安装后,它工作正常

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2018-02-03
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多