将 react-native 升级到最新版本 0.61.4 后找不到以下原生模块
Posted
技术标签:
【中文标题】将 react-native 升级到最新版本 0.61.4 后找不到以下原生模块【英文标题】:Could not find the following native modules after upgrading the react-native to latest version 0.61.4 【发布时间】:2019-11-22 05:50:53 【问题描述】:升级 react-native 版本后,我得到以下内容。并且无法在模拟器中运行构建
在这之后,我运行了 react-native run-ios 它显示我所有的包都是手动链接的,你需要取消链接所有的包。
另外,在更新到最新的 react-native 之后,任何人都可以澄清 react-native-config.js 文件是强制性的。
我总是打开 app.Xcodeproj,但下面显示我需要打开 app.xcworkspace。谁能澄清一下?
warn The following packages use deprecated "rnpm" config that will stop working from next release:
- react-native-fetch-blob: https://github.com/wkh237/react-native-fetch-blob#readme
- react-native-orientation: https://github.com/yamill/react-native-orientation#readme
- rn-fetch-blob: https://github.com/joltup/rn-fetch-blob#readme
Please notify their maintainers about it. You can find more details at https://github.com/react-native-community/cli/blob/master/docs/configuration.md#migration-guide.
error Could not find the following native modules: BugsnagReactNative, react-native-camera, react-native-cookies, react-native-fast-image, react-native-fetch-blob, RNFS, RNGestureHandler, RNImageCropPicker, react-native-image-picker, RNImageRotate, BVLinearGradient, react-native-orientation, RNShare, RNSVG, RNVectorIcons, RNViewShot, react-native-webview, rn-fetch-blob. Did you forget to run "pod install" ?
info Found Xcode workspace "Fashion.xcworkspace"
【问题讨论】:
您是否尝试过取消所有链接并打开 xcworkspace? 我已取消链接所有软件包,但 3 个软件包未取消链接。警告以下软件包使用已弃用的“rnpm”配置,该配置将从下一个版本停止工作:- react-native-fetch-blob:github.com/wkh237/react-native-fetch-blob#readme - react-native-orientation:github.com/yamill/react-native-orientation#readme - rn-fetch-blob:github.com/joltup/rn-fetch-blob#readme请通知他们的维护人员。您可以在github.com/react-native-community/cli/blob/master/docs/… 找到更多详细信息。 哦,那你应该尽快删除 rnpm。如果您得到答案,请发布 我是否需要创建 react-native.config.js 文件是强制性的吗? @sejn,我已经更新了答案,你可以试试 【参考方案1】:这应该可以解决您的问题。
rm -rf ios/Pods && rm -rf ios/build && cd ios && pod install && cd ../
rm -rf node_modules && rm yarn.lock && yarn install
PS:在 react-native 0.60 及更高版本中,本机模块现在是自动链接的。有关更多信息,请参阅文档:https://facebook.github.io/react-native/blog/2019/07/03/version-60#native-modules-are-now-autolinked
【讨论】:
这是否从 Podfile 中删除了所有现有的包? @sejn 好的。有什么更新?那有帮助吗?如果没有,你会得到什么错误?谢谢 从 podfile 中删除所有包。 rm -rf ios/Pods && rm -rf ios/build && cd ios && pod install 之后没有包 找不到以下原生模块:BugsnagReactNative、react-native-camera、react-native-orientation、RNShare、RNSVG、RNVectorIcons、RNViewShot、react-native-webview、rn-fetch-blob。您是否忘记运行“pod install” @sejn 我分享的代码有 pod install 。无论如何,请 cd 进入 ios 目录并运行 pod install【参考方案2】:首先,当你更新 react-native 版本时,你应该使用 react-native 官方document。避免一些错误的事情。 react-native 更新 helper 中的更新细节。
对于您的问题,从 0.60 开始,CocoaPods 现在是 React Native 的 iOS 项目的一部分。如果您还没有,请务必从现在开始使用 xcworkspace 文件打开 iOS 平台代码。
同时,现在在大多数情况下不再需要 react-native 链接。 react-native 团队对链接过程进行了全面检查。确保 react-native 取消链接上述文档中提到的任何预先存在的依赖项。有关更多详细信息,您可以阅读此article。
对于 rnpm 问题,首先你应该在 package.json 中删除它。 然后在项目文件夹中创建一个 react-native.config.js 文件。
const ios = require('@react-native-community/cli-platform-ios');
const android = require('@react-native-community/cli-platform-android');
module.exports =
project:
ios: ,
android: ,
,
// assets: ['Resources/fonts'], // stays the same
// commands: require('./path-to-commands.js'),
;
然后在 rn-fetch-blob(make 为例)中,您还创建 react-native.config.js 并根据其 rnpm config 进行修改
【讨论】:
所以更新到 0.60.4 后需要打开 xcworkspace 而不是 xcodeproj。我可以详细了解一下吗 如果我使用 xcodeproj 意味着我认为它不再有效?我需要在 xcworkspace 的任何地方进行任何更改吗? 我已经打开了xcworkspace。现在我得到 React/RCTBridgeModule.h' 文件未找到 你应该删除旧的链接库,使用 pod install 为 ios 自动链接库。 我已经删除了我的旧库,还从 ios 文件夹运行了 pod install。【参考方案3】:在最新的 react-native 稳定版中,无需链接第三方库,安装即可正常使用
首先,
所以,当您从低版本迁移到高稳定版本时, 然后你需要做什么,只需取消链接你使用过的所有库 在您的项目中,react-native 会自动检测其 依赖关系。而且请记住,每当您安装此类 您不需要运行
react-native link <library-name>
的库 链接它。
其次,
现在您需要像在最新版本中一样使用 xcworkspace 文件, ios正在处理豆荚,当豆荚出现时,你 必须在你的 ios 项目中使用 xcworkspace 而不是 Xcodeproj
您可以查看更新日志here 以了解 React Native 0.61.4 版本。
我希望这会有所帮助....谢谢:)
【讨论】:
【参考方案4】:我的解决方案是结合上面的一些技巧并更新我的 Pod 文件
只需重置:
rm -rf ios/Pods && rm -rf ios/build
cd ios && pod install && cd ..
rm -rf node_modules && rm yarn.lock && yarn install
原因是为了最大限度地提高未来的兼容性。
这是一个 facebook 提供的模板,为您现有的旧 pod 文件挑选一些好东西:
https://github.com/facebook/react-native/blob/0.63-stable/template/ios/Podfile
您可能会发现下面的代码是auto linking
,
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
您可能需要升级 ios 目标
platform :ios, '10.0'
你可以在没有use_frameworks! enabled
的情况下使用Flipper
【讨论】:
【参考方案5】:可能是您的 podfile 中有某些东西导致了这种情况。例如,我从我的项目中删除了一个库,但在 podfile 中仍然有对它的引用:
pod 'react-native-onesignal', :path => '../node_modules/react-native-onesignal'
评论/删除此行后,pod install
效果很好。
【讨论】:
【参考方案6】:对我来说,只是将 npm install 转换为 yarn install 是可行的,因为其他团队正在使用 yarn,而我试图使用 npm 安装包,所以它产生了一些冲突。 然后我重新克隆了项目 'yarn install', 'react-native link' 然后 'pod 安装'
【讨论】:
以上是关于将 react-native 升级到最新版本 0.61.4 后找不到以下原生模块的主要内容,如果未能解决你的问题,请参考以下文章
如何从 React ^0.14.8 & React-native ^0.24.1 升级到 React 15.0.2 和 React-native 0.26.3