Socket.io-client: Erro: tentativa de invocar o método booleano virtual em uma referência de objeto nulo reagir nativo

Criado em 14 nov. 2020  ·  15Comentários  ·  Fonte: socketio/socket.io-client

Observação : para perguntas de suporte, use um destes canais: stackoverflow ou slack

Para relatórios de bugs e solicitações de recursos para o cliente Swift , abra um problema aqui .

Para relatórios de bugs e solicitações de recursos para o cliente Java , abra um problema aqui .

Você quer:

  • [x] relatar um bug
  • [] solicitar um recurso

Comportamento atual

O que realmente está acontecendo?

Após a atualização de 2.3.0 para 3.0.1, obtendo um erro no reagente nativo

Etapas para reproduzir (se o comportamento atual for um bug)

-Crie um novo projeto reagente nativo.
-Instalar socket.io-client.
-Use-o em seu código.

Observação : a melhor maneira (e com isso queremos dizer a única maneira ) de obter uma resposta rápida é fornecer um caso de teste com falha, bifurcando o seguinte violino .

Comportamento esperado

O que é esperado?

Para funcionar corretamente.

Configurar

  • SO: Android
    Screenshot_1605346335

  • navegador:

  • versão socket.io: 3.0.1

Outras informações (por exemplo, rastreamentos de pilha, problemas relacionados, sugestões de como corrigir)

bug

Todos 15 comentários

Eu tenho o mesmo problema com meu projeto nativo Rea, está funcionando bem no iOS, mas recebo este erro com o Android.

versões:
"reagir nativo": "0,63,3",
"socket.io-client": "^ 3.0.1",

O erro vem durante a conexão:
io.connect ('http://192.168.1.81:3750');

Ainda tentando entender.

eu também enfrentando o mesmo problema depois de atualizar minhas bibliotecas, todo o aplicativo funciona bem, mas o soquete apresenta este mesmo erro:

versões:
"reagir nativo": "0,63,3",
"socket.io-client": "^ 3.0.1",

Sou novo no Reag-Native e também estou enfrentando esse problema. Existe uma solução alternativa conhecida?

socket. [email protected]

Fiz o downgrade para a versão 2.3.1, que corrige o problema.

fio adicionar soquete. [email protected]

Olá a todos. Eu realmente poderia reproduzir.

Existe uma maneira de encontrar a linha que está provocando este erro?

@darrachequesne li seu commit e adicionei
{withCredentials: false}
em configurações de soquete e funciona, então o código seria assim:
io(SOCKET_URL, { withCredentials: false, })

@ Mohamed-Rajab-2112 você está certo, definir explicitamente withCredentials deve funcionar: +1:

Deve ser corrigido por [email protected] (que está incluído em [email protected] ). Você poderia confirmar?

Atualizei o exemplo React Native com Socket.IO v3 aqui: https://github.com/socketio/socket.io/tree/master/examples/react-native

Estou tendo o mesmo problema, mas apenas para meu projeto RN em Typescript. Meu outro projeto RN escrito em JS não tem esse problema. E { withCredentials: false } não é uma opção em SocketClient.Socket .

@ Rc85

Estou tendo o mesmo problema, mas apenas para meu projeto RN em Typescript. Meu outro projeto RN escrito em JS não tem esse problema. E { withCredentials: false } não é uma opção em SocketClient.Socket .

Sim, você está certo, withCredentials não faz parte da interface de configuração, no entanto, acho que você deve resolver isso como um problema de texto digitado, mas tente ignorar o erro ts apenas para fins de teste se esta solução funcionaria com você ou não.

para o texto digitado, você pode tentar estender a configuração do soquete e adicionar withCredentials a ele, apenas para fazer o texto digitado não reclamar.

Adicionar withCredentials interrompeu o erro, mas não consigo conectar ao meu servidor. No meu servidor, ele mostra a conexão chegando e o log do console é enviado com spam com a reconexão

io.on('connection', (socket) => {
  console.log('Connecting');
}

mas no lado do cliente, conectado é falso.

{"_callbacks": {"$connecting": [[Function onConnecting]]}, "acks": {}, "connected": false, "disconnected": true, "flags": {}, "ids": 0, "io": {"_autoConnect": true, "_callbacks": {"$close": [Array], "$open": [Array], "$packet": [Array]}, "_randomizationFactor": 0.5, "_readyState": "opening", "_reconnection": true, "_reconnectionAttempts": Infinity, "_reconnectionDelay": 1000, "_reconnectionDelayMax": 5000, "_timeout": 20000, "backoff": {"attempts": 0, "factor": 2, "jitter": 0.5, "max": 5000, "ms": 1000}, "connecting": [[Circular]], "decoder": {}, "encoder": {}, "engine": {"_callbacks": [Object], "hostname": "10.0.0.100", "id": null, "opts": [Object], "pingInterval": null, "pingTimeout": null, "pingTimeoutTimer": null, "port": "80", "prevBufferLen": 0, "readyState": "opening", "secure": false, "transport": [XHR], "transports": [Array], "upgrades": null, "writeBuffer": [Array]}, "nsps": {"/": [Circular]}, "opts": {"hostname": "10.0.0.100", "path": "/socket.io", "port": "80", "secure": false, "withCredentials": false}, "skipReconnect": false, "subs": [[Object], [Object], [Object]], "uri": "http://10.0.0.100"}, "nsp": "/", "receiveBuffer": [], "sendBuffer": [], "subs": [{"destroy": [Function destroy]}, {"destroy": [Function destroy]}, {"destroy": [Function destroy]}]}

Tentei fazer o downgrade para 2.3.1, mas não consigo iniciar o servidor metro do meu projeto RN porque o módulo ../util em node_modules\engine.io-client\lib\transports\polling-xhr.js não pode ser resolvido. Não tive esse problema com meu projeto RN escrito em JS, se isso importa.

Abri um problema no repositório engine.io-client.

@darrachequesne então para testá-lo, devo npm uninstall socket.io-client e executar npm install socket.io-client para obter a atualização mais recente?

Adicionar withCredentials interrompeu o erro, mas não consigo conectar ao meu servidor. No meu servidor, ele mostra a conexão chegando e o log do console é enviado com spam com a reconexão

io.on('connection', (socket) => {
  console.log('Connecting');
}

mas no lado do cliente, conectado é falso.

{"_callbacks": {"$connecting": [[Function onConnecting]]}, "acks": {}, "connected": false, "disconnected": true, "flags": {}, "ids": 0, "io": {"_autoConnect": true, "_callbacks": {"$close": [Array], "$open": [Array], "$packet": [Array]}, "_randomizationFactor": 0.5, "_readyState": "opening", "_reconnection": true, "_reconnectionAttempts": Infinity, "_reconnectionDelay": 1000, "_reconnectionDelayMax": 5000, "_timeout": 20000, "backoff": {"attempts": 0, "factor": 2, "jitter": 0.5, "max": 5000, "ms": 1000}, "connecting": [[Circular]], "decoder": {}, "encoder": {}, "engine": {"_callbacks": [Object], "hostname": "10.0.0.100", "id": null, "opts": [Object], "pingInterval": null, "pingTimeout": null, "pingTimeoutTimer": null, "port": "80", "prevBufferLen": 0, "readyState": "opening", "secure": false, "transport": [XHR], "transports": [Array], "upgrades": null, "writeBuffer": [Array]}, "nsps": {"/": [Circular]}, "opts": {"hostname": "10.0.0.100", "path": "/socket.io", "port": "80", "secure": false, "withCredentials": false}, "skipReconnect": false, "subs": [[Object], [Object], [Object]], "uri": "http://10.0.0.100"}, "nsp": "/", "receiveBuffer": [], "sendBuffer": [], "subs": [{"destroy": [Function destroy]}, {"destroy": [Function destroy]}, {"destroy": [Function destroy]}]}

Tentei fazer o downgrade para 2.3.1, mas não consigo iniciar o servidor metro do meu projeto RN porque o módulo ../util em node_modules\engine.io-client\lib\transports\polling-xhr.js não pode ser resolvido. Não tive esse problema com meu projeto RN escrito em JS, se isso importa.

Abri um problema no repositório engine.io-client.

Ok, vou dar uma olhada mais tarde hoje à noite :)

Correção temporária no momento, pelo menos para mim é o downgrade de socket.io-client para 2.3.1. No entanto, engine.io-client gerou o erro mencionado porque está procurando o módulo ../util algum lugar, que não existe no engine.io-client versão 3.4.4. Tive que fazer npm install engine.io-client@latest para resolver o erro.

Agora posso me conectar ao meu servidor. Vou ficar com 2.3.1 por enquanto.

@ Rc85 Pessoal acabou de atualizar o pacote algumas horas atrás, experimente a nova versão, acho que resolveu o problema, boa sorte!

Isso deve ser corrigido por https://github.com/socketio/engine.io-client/commit/ccb99e3718e8ee2c50960430d2bd6c12a3dcb0dc.

Execute npm install socket.io-client@3 para forçar a atualização das dependências (ou npm update --depth 9999 engine.io-client ).

Se você usar o Expo, pode ser necessário limpar o cache com expo start --clear

Esta página foi útil?
0 / 5 - 0 avaliações