【问题标题】:React Native Error: Ambiguous resolution反应本机错误:不明确的解决方案
【发布时间】:2018-09-07 16:48:04
【问题描述】:

当我尝试在 iOS 模拟器上运行我的 React Native 应用程序时,我看到一个带有以下错误的红屏:

模棱两可的分辨率:模块 '/Users/my-user/Documents/my-RN-app/app/index.js' 试图要求 'react-native-vector-icons',但有几个文件提供 这个模块。您可以删除或修复它们:

/Users/my-user/Documents/my-RN-app/ios/build/Build/Products/Debug-iphonesimulator/MyApp.app/my-RN-app/node_modules/react-native/local-cli/核心/__fixtures__/files/package.json

/Users/my-user/Documents/my-RN-app/node_modules/react-native/local-cli/core/__fixtures__/files/package.json

但是,上述两个文件(package.json 文件)都丢失了。我之前确实遇到过这个错误,所以我决定删除上面提到的第一个目录位置(在 ios/build/.. 等下)中的 package.json 文件并刷新应用程序,它加载得很好。现在,尝试在 iOS 模拟器中再次启动我的应用程序后,我又回到了同样的错误,但我无法删除 package.json 文件,因为它现在在任何一个位置都不存在。

我尝试在我的 app/index.js 文件中注释掉 react-native-vector-icons 库的导入并重新启动 sim,但错误仍然出现。

所以最后,我尝试了这个:

  1. sudo rm -rf node_modules(如果我不使用sudo,我会得到“权限被拒绝”,尽管我似乎对这个项目中的所有文件/文件夹都有完全的读/写权限)
  2. sudo rm -rf ios/build
  3. npm install
  4. cd ios && pod install
  5. react-native link

然后回到 Xcdoe:Product > Clean,然后我再次运行模拟器。还是一样的错误。

根据要求,这是我的 package.json 文件:

 {
  "name": "myApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "run-ios": "node_modules/.bin/react-native run-ios",
  },
  "dependencies": {
    "art": "^0.10.1",
    "auto-bind": "^1.1.0",
    "axios": "^0.16.1",
    "eslint-plugin-react-native": "^2.3.1",
    "jwt-decode": "^2.2.0",
    "moment": "^2.19.1",
    "native-base": "^2.3.1",
    "prop-types": "^15.5.8",
    "pubnub": "^4.18.0",
    "react": "^16.0.0",
    "react-native": "^0.49.3",
    "react-native-actionsheet": "^2.3.0",
    "react-native-device-info": "^0.11.0",
    "react-native-fabric": "^0.5.1",
    "react-native-fingerprint-scanner": "^2.2.1",
    "react-native-flip-card": "^3.5.2",
    "react-native-google-analytics-bridge": "^5.3.3",
    "react-native-haptic": "^1.0.5",
    "react-native-image-base64": "^0.1.3",
    "react-native-image-picker": "^0.26.7",
    "react-native-image-resizer": "^1.0.0",
    "react-native-keyboard-aware-scroll-view": "^0.4.3",
    "react-native-keyboard-spacer": "^0.4.1",
    "react-native-keychain": "^1.2.1",
    "react-native-maps": "^0.17.1",
    "react-native-modal-dropdown": "^0.5.0",
    "react-native-mplayer": "^1.0.1",
    "react-native-notifications-badge-extensions": "^1.0.5",
    "react-native-permissions": "^0.2.7",
    "react-native-pie": "^0.4.0",
    "react-native-router-flux": "^4.0.0-beta.26",
    "react-native-snap-carousel": "^3.2.3",
    "react-native-tag-input": "0.0.18",
    "react-native-tooltip": "^5.2.0",
    "react-native-uuid-generator": "^3.0.2",
    "react-native-vector-icons": "^4.3.0",
    "react-native-version-number": "^0.1.3",
    "react-native-voice": "^0.2.5",
    "react-navigation": "^1.2.0",
    "sprintf-js": "^1.0.3",
    "validator": "^9.2.0"
  },
  "devDependencies": {
    "babel-jest": "18.0.0",
    "babel-preset-react-native": "^4.0.0",
    "enzyme": "^3.3.0",
    "enzyme-adapter-react-16": "^1.1.1",
    "enzyme-to-json": "^3.3.1",
    "eslint": "^3.14.1",
    "eslint-config-airbnb": "^14.1.0",
    "eslint-plugin-import": "^2.2.0",
    "eslint-plugin-jsx-a11y": "^4.0.0",
    "eslint-plugin-react": "^7.5.1",
    "jest": "18.1.0",
    "jest-serializer-enzyme": "^1.0.0",
    "jsdom": "11.6.2",
    "jsdom-global": "3.0.2",
    "metro-bundler": "^0.20.0",
    "react-addons-test-utils": "^15.6.2",
    "react-dom": "^16.2.0",
    "react-native-mock": "^0.3.1",
    "react-test-renderer": "16.0.0-alpha.12",
    "sinon": "^4.1.2"
  },
  "resolutions": {
    "moment": "2.19.1"
  }
}

【问题讨论】:

  • 发布您的package.json。还可以考虑通读this issue。特别是,请查看this comment,因为该问题可能与您遇到的问题有关。
  • 试试npm start -- --reset-cache
  • Michael:我已经在上面发布了我的package.json,但是您链接到的评论可能有所帮助(它没有解决问题,但我还是删除了它建议的文件,然后运行下面的命令,现在我很好)。 Mukesh:我尝试运行该命令,它似乎成功了。这是我运行的顺序:rm -rf ios/buildpod installreact-native link,最后是npm start -- --reset-cache,然后我启动了 sim,没有错误,耶!
  • Nvm,说得太早了。该应用程序启动了,然后我也尝试启动远程调试器,现在我遇到了类似的错误,除了现在使用tries to require react-native 而不是react-native-vector-icons。我打开 xcode 并执行 Product > Clean 并尝试通过 xcode 启动应用程序(而不是使用 react native cli),现在它正在工作......我对真正的根本问题感到非常困惑。
  • 我遇到了类似的问题,这可能有帮助吗? stackoverflow.com/questions/52737251/…

标签: xcode react-native node-modules


【解决方案1】:

我必须手动将 React pod 链接到 node_modules

pod 'React', :path => '../node_modules/react-native'

然后清理并再次构建

【讨论】:

  • 太棒了,但我发现我还需要添加一个子规范部分!
猜你喜欢
  • 2018-04-24
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 2010-11-29
  • 1970-01-01
  • 2016-06-21
相关资源
最近更新 更多