J'obtiens ReferenceError: le navigateur n'est pas défini en exécutant le code suivant sur node.js:
navigator.geolocation.getCurrentPosition((data) => { console.log(data); });
Je suppose que le problème est que Navigator.geolocation est une API Web et ne fonctionne pas sur le nœud. Existe-t-il un moyen de se moquer du navigateur et de l'utiliser sur node.js?
Merci beaucoup
3 Réponses :
Node.js est une technologie côté serveur, ce qui signifie qu'il ne peut pas accéder directement à la géolocalisation de l'utilisateur.
Ce que vous devriez demander, c'est comment obtenir la géolocalisation en utilisant javascript côté client, puis simplement envoyer ces informations à votre serveur via Ajax.
Plus d'informations ici: http://www.w3schools.com/html/html5_geolocation.asp .
Il existe bien sûr des bibliothèques qui en faciliteront l'utilisation.
Existe-t-il un moyen de se moquer du navigateur et de l'utiliser sur node.js?
Une bibliothèque utile pour se moquer des API Web est
browser-env
.browserEnv(['navigator']);Ensuite:
import browserEnv from 'browser-env';Cela pollue l'espace de noms global, cependant, soyez prudent dans son utilisation.
J'ai donc créé cela parce que l'analyse ne prend pas en charge le nœud, elle nécessite donc une importation conditionnelle
import isNode from 'detect-node' export async function analyticsLogEvents(event, params) { if (!isNode) { const firebase = await import('firebase/app') await import('firebase/analytics') firebase.default.analytics().logEvent(event, params) } }
Est-ce que cela répond à votre question? require (processing-js) renvoie une erreur de référence: Navigateur introuvable
Qu'essayez-vous de faire? Obtenir l'emplacement de l'ordinateur sur lequel Node.js s'exécute? Écrire des tests unitaires pour du code destiné à s'exécuter dans un navigateur (mais avec des tests exécutés via Node.js)? Autre chose?