React Native(版本0.61.5)中的Meteor.connect抛出错误

时间:2019-12-16 18:45:50

标签: react-native meteor react-native-android react-native-community-netinfo react-native-meteor

我正在使用 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 Issue此处已打开一个问题,但尚未解决。

2 个答案:

答案 0 :(得分:0)

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

yarn add @react-native-community/netinfo
or:
npm install --save @react-native-community/netinfo
在此github link

上可以找到

分步说明

我遵循了上述链接中提到的这些步骤,但是并不能完全解决问题。在深入研究问题之后,我发现在 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();
        }
      });
});

答案 1 :(得分:0)

ImFarhad仍然对您有用吗?使用对meteor.js所做的更改,我收到错误“ RNCNetInfo.getCurrentState得到3个参数,预期为2”。您知道解决这个问题的方法吗?