错误 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 ”取消链接此依赖项,它将自动包含在您的应用程序中。如果库与自动链接不兼容,请忽略此消息并通知库维护者。【参考方案2】:

基本上自动链接是 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

无法在以前使用 expo cli 构建的应用程序上安装 React 本机 cli 应用程序

React Native:对原生依赖使用自动链接“react-native-maps”