错误 React Native CLI 对本机依赖项使用自动链接,但以下模块是手动链接的
Posted
技术标签:
【中文标题】错误 React Native CLI 对本机依赖项使用自动链接,但以下模块是手动链接的【英文标题】:error React Native CLI uses autolinking for native dependencies, but the following modules are linked manually 【发布时间】:2019-07-07 12:31:50 【问题描述】:升级到 React Native 0.60 后出现此错误。
我已尝试按照错误消息中的建议使用 react-native unlink <dependency>
手动取消链接每个手动链接的依赖项,但问题仍然存在。
报错信息如下:
error React Native CLI uses autolinking for native dependencies, but the following modules are linked manually:
- react-native-admob (to unlink run: "react-native unlink react-native-admob")
- react-native-facebook-account-kit (to unlink run: "react-native unlink react-native-facebook-account-kit")
- react-native-fbsdk (to unlink run: "react-native unlink react-native-fbsdk")
- react-native-gesture-handler (to unlink run: "react-native unlink react-native-gesture-handler")
- react-native-linear-gradient (to unlink run: "react-native unlink react-native-linear-gradient")
- react-native-localization (to unlink run: "react-native unlink react-native-localization")
- react-native-restart (to unlink run: "react-native unlink react-native-restart")
- react-native-vector-icons (to unlink run: "react-native unlink react-native-vector-icons")
- react-native-webview (to unlink run: "react-native unlink react-native-webview")
This is likely happening when upgrading React Native from below 0.60 to 0.60 or above. Going forward, you can unlink this dependency via "react-native unlink <dependency>" and it will be included in your app automatically. If a library isn't compatible with autolinking, disregard this message and notify the library maintainers.
Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md
【问题讨论】:
参考链接github.com/kmagiera/react-native-gesture-handler/issues/… 【参考方案1】:我通过执行以下操作设法使错误消失:
-
在项目的根目录中创建一个 react-native.config.js 文件。
将其更新为如下内容:
// react-native.config.js
module.exports =
dependencies:
'<dependency>':
platforms:
android: null, // disable Android platform, other platforms will still autolink
,
,
,
;
Source
【讨论】:
不适合我。错误 React Native CLI 对本机依赖项使用自动链接,但以下模块是手动链接的: - react-native-gesture-handler(取消链接运行:“react-native unlink react-native-gesture-handler”)将 React Native 从 0.60 以下升级到 0.60 或以上。展望未来,您可以通过“react-native unlink基本上自动链接是 react-native 链接的替代品。如果你一直在使用 React Native 0.60 之前的版本。
但您也可以为不受支持的库禁用自动链接
在过渡期间,某些软件包可能不支持某些平台上的自动链接。要禁用包的自动链接,请将您的 react-native.config.js 的依赖项条目更新为如下所示:
// react-native.config.js
module.exports =
dependencies:
'some-unsupported-package':
platforms:
android: null, // disable Android platform, other platforms will still autolink if provided
,
,
,
;
如需进一步说明,请点击此链接:https://github.com/react-native-community/cli/blob/master/docs/autolinking.md
【讨论】:
【参考方案3】:我收到此错误“React Native CLI 对本机依赖项使用自动链接,但以下模块是手动链接的”。然后我通过使用这三个命令从我的 ios 项目中删除这三个依赖项 react-native-gesture-handler、react-native-reanimated 和 react-native-vector-icons 来解决错误;
react-native unlink react-native-gesture-handler --platforms ios
react-native unlink react-native-reanimated --platforms ios
react-native unlink react-native-vector-icons --platforms ios
然后是$ cd ios
,然后是ios/myproject$ pod install
,然后是cd ..
,然后是myproject$ npx react-native run-ios
【讨论】:
【参考方案4】:以下对我有用,从您的项目中删除 node_modules
然后运行 npm install
以重新安装所有模块。
【讨论】:
【参考方案5】:我在上面没有看到任何完美的答案。这些解决方法并不能真正解决问题的根本原因。
这个问题困扰了我几个月,直到今天我花了一天时间研究这个问题。这个问题是由两件事引起的:
1. Gradle 文件在 Android Studio 中不同步。
打开 Android Studio 并从您的 React Native 项目中选择 android 目录,Android Studio 将自动同步并构建项目。如果没有,请手动选择 File->Sync Pojrect with Gradle Files。 10 次中有 9 次会遇到问题。由仍然使用“编译”而不是“实现”的过时包或其他一些奇怪的 kotlin 相关问题引起的。你可以试试这些步骤
a) 将包更新到较新的版本或手动替换所有以 compile to implementation 开头的行。
b) File->Invalidate Caches /Restart 然后选择 Invalidate and Restart。
c) 构建->清理项目
如果以上都不是,那么谷歌搜索每个单独的问题,并确保项目同步并成功构建。
现在您可以尝试运行 react-native run-android 并查看取消链接错误消息是否仍然显示。如果仍然存在,请执行以下操作。
2。模块仍在加载中
在 Android Studio 中,您将看到一个 .idea 目录。删除 /.idea 下的 modules.xml(先备份以防万一)文件。然后进行同步并再次构建。
这应该可以解决自动链接错误消息。
【讨论】:
【参考方案6】:只需输入这个:为我工作
-
npx react-native unlink react-native-vector-icons
npm 删除节点模块
纱线缓存清理
纱线安装
watchman watch-del-all
rm -fr $TMPDIR/metro-cache
纱线开始 --clear
【讨论】:
这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review【参考方案7】:react-native-config.js
module.exports =
dependencies:
'react-native.config':
platforms:
android: null, // disable Android platform, other platforms will still autolink if provided
,
,
,
;
【讨论】:
以上是关于错误 React Native CLI 对本机依赖项使用自动链接,但以下模块是手动链接的的主要内容,如果未能解决你的问题,请参考以下文章
在本机 ios 中找不到模块“react-native-reanimated/plugin”
未满足的对等依赖 React Native CLI Init
React Native 版本不匹配。本机 0.54.4 和 Javascript 0.52