1

我在react-native-app中使用react-native-meteor模块将其连接到Meteor服务器。 在 App.js 中调用以下函数时,

Meteor.connect('ws://192.168.x.x:3000/websocket'); 

我收到了这个错误

Invariant Violation: NetInfo has been removed from React.Native.It can now be installed and imported from 'react-native-netinfo' 

已在此处打开了一个问题NetInfo 问题但尚未解决。

4

2 回答 2

0

NetInfo 已从 react-native 核心中删除。它应该使用以下命令作为独立依赖项安装:

yarn add @react-native-community/netinfo
or:
npm install --save @react-native-community/netinfo

可以在此github 链接上找到分步说明

我按照上述链接中提到的这些步骤进行操作,但并没有完全解决问题。稍微挖掘一下问题后,我发现在node_modules/react-native-meteor/src/Meteor.js中,他们仍在从 'react-native' 导入 NetInfo 并使用旧功能

import { Platform, View, NetInfo } from 'react-native'; 
NetInfo.isConnected.fetch().then(
  (connected )  => {
  if(connected)
    NetInfo.isConnected.addEventListener('connectionChange', isConnected => {
    if (isConnected && Data.ddp.autoReconnect) {
      Data.ddp.connect();
    }
  });
}
);

现在已经过时了。

它必须从@react-native-community/netinfo 导入
node_modules/react-native-meteor/src/Meteor.js中进行以下更改后。错误修复:

import { Platform, View } from 'react-native';
import NetInfo from "@react-native-community/netinfo";

NetInfo.fetch().then(state => {
  console.log("Connection type", state.type);
  console.log("Is connected?", state.isConnected);
  let isConnected = state.isConnected;
   if(isConnected)
        NetInfo.isConnected.addEventListener('connectionChange', isConnected => {
        if (isConnected && Data.ddp.autoReconnect) {
          Data.ddp.connect();
        }
      });
});
于 2019-12-16T18:45:50.920 回答
0

ImFarhad 这仍然对你有用吗?使用您对meteor.js 的更改,我收到错误“RNCNetInfo.getCurrentState got 3 arguments, expected 2”。你知道解决这个问题的方法吗?

于 2020-01-01T14:00:44.440 回答