Peerjs: Exécuter le client peerjs dans une application node.js ?

Créé le 6 nov. 2013  ·  65Commentaires  ·  Source: peers/peerjs

Serait-il possible d'exécuter un client peer.js dans une application node.js au lieu du navigateur ?

Je crée un réseau peer-to-peer composé de pairs (programmatiques) vivant à la fois dans des navigateurs et dans des applications node.js. Ils doivent s'envoyer des données, pas de vidéo/audio. WebRTC serait une excellente solution pour résoudre le routage et la communication entre les pairs sans avoir besoin d'une structure client/serveur centralisée. Mais WebRTC semble être pris en charge uniquement dans le navigateur.

Voir aussi cette question : http://stackoverflow.com/questions/18872712/node-js-webrtc-client

Commentaire le plus utile

Aperçu
Salut, je vois que c'est vieux, mais vous ou n'importe qui pourriez en avoir besoin. Je travaille sur ma thèse et j'ai fait quelques pas en avant. J'ai essayé beaucoup de choses et simplepeer n'a pas implémenté de signalisation. L'envoi de messages via datachannel (nodejs peerjs webrtc) - via le réseau sur Raspberry Pi 2 (ARM, Raspbian Jessie, mais devrait fonctionner partout) à l'aide du serveur de signalisation déployé (peerserver) fonctionne maintenant. L'autre client est un navigateur Firefox dans l'environnement Windows. Je n'aurais pas réussi sans votre discussion ici, alors je redonne à la communauté.

Éléments clés sur ce qu'il faut (ne pas) faire :
-n'utilisez pas de sélénium, ce n'est pas assez rapide, du moins pour mon application
-xvfb n'a pas fonctionné pour moi, eh bien ça l'a fait
-vous ne devez pas exiger le module peerjs
-sur Raspberry au moins - utilisez electron-webrtc, car wrtc n'est de toute façon pas disponible pour arm
-ne pas utiliser la sérialisation

Avoir à tout faire par soi-même est difficile, alors voici le code :
fenêtre = globale
window.BlobBuilder = require("BlobBuilder")
emplacement = {protocole : 'http'}

BinaryPack = require("binary-pack")
XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest ;
var wrtc = require('electron-webrtc')()
//var Peer = require('peerjs')

RTCPeerConnection = wrtc.RTCPeerConnection ;
RTCSessionDescription = wrtc.RTCSessionDescription ;
RTCIceCandidate = wrtc.RTCIceCandidate ;

WebSocket = nécessite('ws')
require('/home/pi/node_modules/peerjs/lib/exports.js');

var pair = nouveau pair(
...
})

var conn=peer.connect('id')
conn.serialization='aucun'
conn.send('bonjour de nodejs!')

Voilà, cordialement, JP

Tous les 65 commentaires

J'ai trouvé une initiative de @helloIAmPau pour créer une implémentation node.js de WebRTC : https://github.com/helloIAmPau/node-rtc/. Peut-être est-il possible de regrouper les forces ?

Salut Jos,

Je vais garder un œil dessus. Lorsqu'il existe un client de nœud webrtc fiable, il
devrait être trivial pour porter peerjs.

Le mercredi 6 novembre 2013 à 6h46, Jos de Jong [email protected] a écrit :

J'ai trouvé une initiative de @helloIAmPau https://github.com/helloIAmPau pour
créez une implémentation node.js de WebRTC :
https://github.com/helloIAmPau/node-rtc/. Peut-être est-il possible de regrouper
les forces?


Répondez directement à cet e-mail ou consultez-le sur Gi tHubhttps://github.com/peers/peerjs/issues/103#issuecomment -27878686
.

510-691-3951
http://ericzhang.com

Voir également https://github.com/modeswitch/node-webrtc . Je pense que node-rtc est remplacé par celui-ci.

Merci Eric, ce serait super.

Cela permettrait également à une application node.js fonctionnant comme un MCU de contrôler les flux vidéo/audio d'un groupe de pairs (conférence téléphonique), dans une architecture en étoile comme l'expliquait Justin Uberti lors de la dernière Google I/O sur WebRTC (du 23 :19). Node.js est doué pour gérer les flux, ce qui pourrait parfaitement convenir.

@ericz quelle est la raison de fermer ce problème ? La prise en charge de node.js serait vraiment géniale et puissante.

Salut josdejong,

Je l'ai fermé car il n'y a pas d'élément d'action mais je le rouvrirai pour que nous puissions garder un œil sur la fonctionnalité :)

d'accord merci. N'hésitez pas à ajuster le titre à quelque chose comme "node.js support" et à donner au problème une étiquette appropriée...

:+1: Ce serait une fonctionnalité très utile.

:+1: Votez pour cela aussi.

:+1: indispensable

+1

J'ai réussi à me moquer de certains objets et à faire fonctionner peerjs sur node.js

fenêtre={} ;
window.BlobBuilder = require("BlobBuilder");
emplacement={} ;
location.protocol="http" ;

BinaryPack = require("binary-pack");
XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest ;

var wrtc = require("wrtc");
RTCPeerConnection = wrtc.RTCPeerConnection ;
RTCSessionDescription = wrtc.RTCSessionDescription ;
RTCIceCandidate = wrtc.RTCIceCandidate ;

WebSocket = nécessite('ws');
var peerClient =require("./peer.js");

J'ai réussi à faire en sorte que peerjs établisse des connexions et que le serveur obtienne des connexions. Cependant, lorsque j'essaie d'envoyer des données, j'obtiens une erreur de suivi

[Erreur : la connexion n'est pas ouverte. Vous devriez écouter l'événement open avant d'envoyer des messages.]

Voici l'essentiel

https://gist.github.com/piyushranjan/1204bc579b7c1f5a3e84

Et ces packages npm doivent être installés

npm installer BlobBuilder
npm installer le pack binaire
npm installer ws
npm installer xmlhttprequest
npm installer wrtc

Ah, c'est vraiment génial ! Je vais jeter un oeil :).

Michelle

Le mardi 6 mai 2014 à 7h37, Piyush Ranjan [email protected] a écrit :

J'ai réussi à me moquer de certains objets et à faire fonctionner peerjs sur node.js

fenêtre={} ;
window.BlobBuilder = require("BlobBuilder");
emplacement={} ;
location.protocol="http" ;

BinaryPack = require("binary-pack");
XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest ;

var wrtc = require("wrtc");
RTCPeerConnection = wrtc.RTCPeerConnection ;
RTCSessionDescription = wrtc.RTCSessionDescription ;
RTCIceCandidate = wrtc.RTCIceCandidate ;

WebSocket = nécessite('ws');
var peerClient =require("./peer.js");

J'ai réussi à faire en sorte que peerjs établisse des connexions et que le serveur obtienne des connexions.
Cependant, lorsque j'essaie d'envoyer des données, j'obtiens une erreur de suivi

[Erreur : la connexion n'est pas ouverte. Vous devriez écouter l'événement ouvert
avant d'envoyer des messages.]

Voici l'essentiel

https://gist.github.com/piyushranjan/1204bc579b7c1f5a3e84

Et ces packages npm doivent être installés

npm installer BlobBuilder
npm installer le pack binaire
npm installer ws
npm installer xmlhttprequest
npm installer wrtc


Répondez directement à cet e-mail ou consultez-le sur Gi tHubhttps://github.com/peers/peerjs/issues/103#issuecomment -42292282
.

@michelle déjà de la chance avec ça? J'ai essayé, et l'ouverture d'une connexion semble fonctionner mais les messages envoyés ne sont jamais reçus.

:+1: pour cette fonctionnalité

:+1: pour cette fonctionnalité

:+1:

:+1::+1::+1 :

Je me demandais quel était le statut de cela? Ce serait génial si cela était pris en charge?

Il existe un module de nœud pour peerjs, mais je pense que cela ne fonctionne pas encore. Lorsque j'en ai besoin, j'obtiens que la fenêtre n'est pas définie, ce qui est une objection juste.
https://www.npmjs.org/package/peerjs#readme

Alors je suis curieux : y a-t-il quelque chose qui se passe ? Ce serait tellement génial de l'avoir! ;)

Ce module de nœud est pour le code navigateur :).

Michelle

Le jeudi 23 octobre 2014 à 11h37, Lixissimus [email protected]
a écrit:

Il existe un module de nœud pour peerjs, mais je pense que cela ne fonctionne pas encore. Quand je
l'exige, j'obtiens que la fenêtre n'est pas définie, ce qui est une objection juste.
https://www.npmjs.org/package/peerjs#readme

Alors je suis curieux : y a-t-il quelque chose qui se passe ? Ce serait tellement génial d'avoir
ce! ;)


Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/peers/peerjs/issues/103#issuecomment -60287567.

Alors, qu'est-ce qu'il est censé faire?

Je ne sais pas si je suis juste confus à propos de node, mais cela semble étrange d'avoir un module npm pour peerjs, si le module peerjs lui-même ne peut être utilisé qu'à partir du navigateur ?

Désolé, c'était avant que nous commencions à publier la bibliothèque sur Bower.

Michelle

Le jeudi 23 octobre 2014 à 11h51, Alan Chusuei [email protected]
a écrit:

Je ne sais pas si je suis juste confus à propos de node, mais cela semble étrange d'avoir
un module npm pour peerjs, si le module peerjs lui-même ne peut être utilisé que depuis
le navigateur ?


Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/peers/peerjs/issues/103#issuecomment -60289790.

@AChusuei Je ne vois aucun problème à avoir des bibliothèques spécifiques au navigateur dans npm, ou des bibliothèques isomorphes. Pour mes applications Web JS à pile complète, j'aime avoir affaire à npm uniquement, plutôt que d'avoir à récupérer la moitié des bibliothèques de npm et l'autre moitié de bower.

@michelle J'espère vraiment que peerjs obtiendra un support pour un client node.js !!

@josdejong , je suppose que vous pourriez le faire de cette façon. Je suis encore nouveau dans le monde des nœuds, ouvert à faire les choses différemment !

:+1:

Jusqu'à ce que ce problème soit résolu, il pourrait y avoir des solutions de contournement possibles avec des navigateurs sans tête. Je ne les ai pas testé moi-même :

je vais essayer le second.

:+1:

+2^56 pour la fonctionnalité !

:+1:

:+1:

:+1:

+1

Le hack posté par @piyushranjan ne semble pas fonctionner avec la version stable actuelle, car il n'exporte rien globalement (et tous les modules sont dans un seul fichier).

La solution de contournement semble être d'utiliser la version non "compilée"/concaténée.

Ainsi, clonez le référentiel, puis faites quelque chose comme ceci :

window = global;
location = {protocol: 'http'};

XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

var wrtc = require("wrtc");
RTCPeerConnection = wrtc.RTCPeerConnection;
RTCSessionDescription = wrtc.RTCSessionDescription;
RTCIceCandidate = wrtc.RTCIceCandidate;

WebSocket = require('ws');

require('./peerjs/lib/exports.js');

var peer = new Peer({
  // snip...
});

Portez une attention particulière à la ligne require près du bas, qui gère le chargement de toutes les parties séparées pour vous, dans l'objet global / window .

Encore un piratage désagréable, mais il semble fonctionner, du moins pour des tests très basiques.

Remarque : les mêmes mises en garde s'appliquent, vous devez toujours installer certains packages en premier :

npm install BlobBuilder binary-pack ws xmlhttprequest wrtc

@lewiseason Avez-vous réellement mis en place une connexion et avez-vous pu envoyer des données par exemple ?

Je n'y suis pas parvenu jusqu'à présent. Il semble que je puisse ouvrir une connexion, mais aucun canal de données n'a été créé.

C'est ce que j'ai essayé:

  1. Installation

sudo apt-get install libnss3-dev libexpat1-dev npm install peerjs BlobBuilder binary-pack ws xmlhttprequest wrtc

  1. Créez un fichier html peer1.html connectant un pair client avec l'id 'peer1' :

``` html



pair1



```
  1. Créez un script node.js peer3.js :

``` js
fenêtre = global ;
window.BlobBuilder = require("BlobBuilder");
emplacement = {protocole : 'http'} ;

BinaryPack = require("binary-pack");
XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest ;

var wrtc = require("wrtc");
RTCPeerConnection = wrtc.RTCPeerConnection ;
RTCSessionDescription = wrtc.RTCSessionDescription ;
RTCIceCandidate = wrtc.RTCIceCandidate ;

WebSocket = nécessite('ws');

require('peerjs/lib/exports.js');

var peer = new Peer('peer3', {key: 'lwjd5qra8257b9', debug: true});

peer.on('ouvrir', fonction () {
console.log('peer open');
var conn = pair.connect('peer1');

 conn.on('data', function(data) {
   console.log('Received', data);
 });

 conn.on('error', function (err) {
   console.log('Error', err);
 });

 conn.on('open', function () {
   console.log('connection open');
   conn.send('Hello from ' + peer.id + '!');
 });

});
```

  1. Ouvrez le fichier peer1.html dans votre navigateur
  2. Exécutez le script node.js peer3.js

En regardant la sortie de débogage, il semble que peer3 est connecté avec succès à peer1, mais il n'établit pas de canal de données : peer1 sort "nouvelle connexion à peer3", mais aucun message n'est reçu.

J'ai bien peur de ne pas être allé très loin en le testant - cela semblait un peu à Frankenstein à utiliser en production, alors j'ai fini par le laisser. Pardon :(

:+1:

:+1:

Une mise à jour pour ceci?

@josdejong , le problème réside dans les données de signalisation. Il semble qu'aucune donnée STUN ne soit jointe à l'offre/réponse. Sans ces données, aucune connexion réelle ne peut être établie. Ce qui suit établit une connexion entre le navigateur et le nœud mais sans signalisation peerjs.

https://github.com/cjb/serverless-webrtc

+1

+1

Quelqu'un veut ouvrir une prime ?

Comme il est ouvert depuis plus de deux ans : existe-t-il un (autre) package connu qui fonctionne en P2P dans le navigateur et le nœud ?

Je n'ai pas eu le temps de le vérifier, mais https://github.com/feross/simple-peer dit que cela fonctionne à la fois dans node.js et dans le navigateur.

Est-ce ce que vous cherchez ? https://github.com/socketio/socket.io-p2p

du fichier readme :

"Ce module fournit un moyen simple et fiable de configurer une connexion WebRTC entre pairs et de communiquer à l'aide d'événements (le protocole socket.io).

Socket.IO est utilisé pour transporter les données de signalisation et comme solution de secours pour les clients où WebRTC PeerConnection n'est pas pris en charge."

En ce qui me concerne, cela ne fonctionne pas sur Node. C'est pourquoi je suis tombé sur ce fil.

Hmm. Pourriez-vous être plus précis? Je l'utilise en ce moment, en utilisant un serveur de nœud pour connecter des pairs qui établissent ensuite des connexions webRTC entre eux et/ou avec la machine du serveur de nœud.

utiliser un serveur de nœud pour connecter des pairs qui établissent ensuite des connexions webRTC entre eux

Donc, vous ne l'exécutez _pas_ en tant que client. Vous l'exécutez sur un serveur qui connecte d'autres clients (que vous ne mentionnez pas comme étant des applications de nœud - si c'est le cas, je serais intéressé par la façon dont vous les configurez).
Ce fil concerne l'utilisation de peerjs (ou potentiellement de toute autre chose) en tant que pair (client) dans une application de nœud.

connexions webRTC les unes aux autres et/ou à la machine du serveur de nœud

La deuxième partie de cela semble être exactement ce dont il est question ici. Quelqu'un d'autre peut-il confirmer cela?

Non, le problème est d'utiliser NodeJS en tant que client WebRTC. C'est à dire. se connecter depuis une instance NodeJS qui n'est pas nécessairement le serveur.

Oh, excuses. SimplePeer le fera. Mais cela nécessite que la plate-forme du serveur ait certaines fonctionnalités webrtc installées. Le module 'wrtc' le fournit sur la plupart des machines. Notamment _pas_ sur un raspberry pi en ce moment, au cas où cela compte pour vous (ça me concerne !)

extrait de leur readme.md :

dans le nœud

Pour utiliser cette bibliothèque dans node, passez opts.wrtc en paramètre :

var SimplePeer = require('simple-peer')
var wrtc = require('wrtc')

var peer1 = new SimplePeer({ initiateur : vrai, wrtc : wrtc })
var peer2 = new SimplePeer({ wrtc: wrtc })

+1 ce serait une fonctionnalité intéressante

Découvrez electron-webrtc ou webrtc-native. J'utilise electron-webrtc pour mon instance node.js pour me connecter aux navigateurs (en utilisant spécifiquement le canal de données)

Aperçu
Salut, je vois que c'est vieux, mais vous ou n'importe qui pourriez en avoir besoin. Je travaille sur ma thèse et j'ai fait quelques pas en avant. J'ai essayé beaucoup de choses et simplepeer n'a pas implémenté de signalisation. L'envoi de messages via datachannel (nodejs peerjs webrtc) - via le réseau sur Raspberry Pi 2 (ARM, Raspbian Jessie, mais devrait fonctionner partout) à l'aide du serveur de signalisation déployé (peerserver) fonctionne maintenant. L'autre client est un navigateur Firefox dans l'environnement Windows. Je n'aurais pas réussi sans votre discussion ici, alors je redonne à la communauté.

Éléments clés sur ce qu'il faut (ne pas) faire :
-n'utilisez pas de sélénium, ce n'est pas assez rapide, du moins pour mon application
-xvfb n'a pas fonctionné pour moi, eh bien ça l'a fait
-vous ne devez pas exiger le module peerjs
-sur Raspberry au moins - utilisez electron-webrtc, car wrtc n'est de toute façon pas disponible pour arm
-ne pas utiliser la sérialisation

Avoir à tout faire par soi-même est difficile, alors voici le code :
fenêtre = globale
window.BlobBuilder = require("BlobBuilder")
emplacement = {protocole : 'http'}

BinaryPack = require("binary-pack")
XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest ;
var wrtc = require('electron-webrtc')()
//var Peer = require('peerjs')

RTCPeerConnection = wrtc.RTCPeerConnection ;
RTCSessionDescription = wrtc.RTCSessionDescription ;
RTCIceCandidate = wrtc.RTCIceCandidate ;

WebSocket = nécessite('ws')
require('/home/pi/node_modules/peerjs/lib/exports.js');

var pair = nouveau pair(
...
})

var conn=peer.connect('id')
conn.serialization='aucun'
conn.send('bonjour de nodejs!')

Voilà, cordialement, JP

Salut @jeryfast , merci pour vos solutions, je cherchais quelque chose comme ça 👍

Je l'ai testé sur un mac (pas encore sur la framboise) et j'obtenais l'erreur "Échec de la définition de la propriété 'binary Type' sur 'RTCDataChannel' : la prise en charge de Blob n'est pas encore implémentée"

Après quelques recherches, j'ai trouvé que sur le fichier utils, sur le chemin node_modules/peerjs/lib autour de la ligne 116 :

try {
        dc.binaryType = 'blob';
        binaryBlob = true;
      } catch (e) {
      }

qui provoque l'erreur et le blocage de l'application.

Si le code est commenté, l'application fonctionne et se comporte comme un client de navigateur, tout simplement magnifique. Mais c'est un hack sale, donc je cherchais un moyen de "configurer" ou de faire quelque chose qui ne change pas le code de la bibliothèque, mais jusqu'à présent je n'en ai trouvé aucun.

Le défi réside dans le moment où ce morceau de code est exécuté, c'est-à-dire sur le processus de chargement du module, lorsque la demande des exportations est effectuée :

require('./node_modules/peerjs/lib/exports.js');

Quelqu'un a-t-il une idée ou une suggestion sur la façon de corriger cela?

Salutations

Bien, si vous utilisez la sérialisation "none", cela fonctionne aussi, sans rien changer dans une bibliothèque. Salutations

Salut à nouveau @jeryfast ça marche sur le Raspberry comme tu l'as dit. Le problème sur mon dernier message est lié à OS X.

Eh bien, la chose est un excellent travail 👍

Non, commençons le plaisir 💃

Bonjour
J'obtiens cette erreur.
```
global.postMessage(messageName, '*');
^

TypeError : global.postMessage n'est pas une fonction
à Object.setZeroTimeoutPostMessage [as setZeroTimeout] (

@crosogf , cette erreur me semble être le symptôme d'un problème plus vaste. Il semble que le seul endroit où postMessage est utilisé est dans le code de gestion des erreurs. Je suppose que cela a quelque chose à voir avec la détection du support binaire blob dans lib/util.js (le code @nuno-nlfsoftware dit de commenter). J'ai remarqué qu'il y a deux endroits où le code est présent, dans dist/peer.js ou dist/peer.min.js, et dans lib/util.js. Pour moi, seules les modifications apportées à ce dernier étaient efficaces (en raison du hack de @jeryfast d'exiger lib/exports.js).

Je vais juste laisser ça ici https://www.npmjs.com/package/peerjs-nodejs

De plus, la sérialisation de la connexion n'a pas besoin d'être définie sur none . Vous pouvez utiliser n'importe quelle autre option en plus binary , il vous suffit de la définir car le binaire est la valeur par défaut. Je l'ai réglé sur json , ce qui fonctionne très bien.

Je vais juste laisser ça ici https://www.npmjs.com/package/peerjs-nodejs

Merci, je pense que cela devrait faire partie de PeerJS.

voici mon code après test jeryfast & peerjs-nodejs

const peerJs = require('peerjs-nodejs');
const peer = peerJs("myPeerId", {
host: '192.168.137.231',
port: 9000,
pingInterval: 5000,
path: '/myapp',
debug: 3, 
iceTransportPolicy: 'relay',
config: {
'iceServers': [
    { urls: "stun:stun.l.google.com:19302" },
    {
        urls: "turn:34.192.149.24:5678?transport=udp",
        username: "USER", credential: "PASS"
    }
]
}
});

let conn = peer.connect('myPeerJS', {
    reliable: true
});


setTimeout(()=>{
 // NOT JSON
 // conn.serialization='none';
 // conn.send('hello from nodejs!');  

 // JSON WAY
 conn.serialization = 'json';
 conn.send({ value: 'hello from nodejs!' });

}, 3000);

setTimeout(()=>{
  conn.close();
  console.log("CONN CLOSE");
  process.exit();
}, 10000);

Bonjour, je reçois cette erreur dès que je crée une instance Peer (en utilisant peerjs-nodejs ) sur le serveur NodeJS. Je ne crée même pas de connexion à un pair distant pour le moment. Est-ce que quelqu'un l'a résolu ?

serveur.js

const Peer = require('peerjs-nodejs')

...

this.peer = Peer('webRTC-webinar-plugin', {
      host: '/',
      path: 'peer-js',
      port: (useHTTPS) ? 8443 : 8080,
      secure: (useHTTPS) ? true : false
})
/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/util.js:234

      global.postMessage(messageName, '*');
             ^
TypeError: global.postMessage is not a function
    at Object.setZeroTimeoutPostMessage [as setZeroTimeout] (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/util.js:234:14)
    at Peer.disconnect (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/peer.js:420:8)
    at Socket.<anonymous> (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/peer.js:120:12)
    at Socket.emit (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/eventemitter3/index.js:71:35)
    at exports.XMLHttpRequest._http.onerror (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/socket.js:91:12)
    at exports.XMLHttpRequest.dispatchEvent (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:591:25)
    at exports.XMLHttpRequest.handleError (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:533:10)
    at ClientRequest.errorHandler (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:459:14)
    at ClientRequest.emit (events.js:310:20)
    at Socket.socketErrorListener (_http_client.js:426:9)

Quelqu'un peut-il aider? Merci.

Cette page vous a été utile?
0 / 5 - 0 notes