web-dev-qa-db-fra.com

ReferenceError: la fenêtre n'est pas définie sur l'objet. <anonymous> Node.js

J'ai vu des questions similaires qui ont été posées ici mais aucune ne correspond à ma situation. Dans mon site Web, j'ai 3 fichiers JavaScript: client.js, server.js, myModule.js. Dans client.js, je crée une variable de fenêtre appelée windowVar et j'y ajoute des attributs. Dans myModule.js, j'ajoute d'autres attributs et les utilise ici. J'exporte le fichier et l'exige dans server.js.

client.js:

window.windowVar= {
    func1: function(args) {    
       //some sode here
    },
    counter:0
};

myModule.js:

module.exports={wVar:windowVar, addMessage ,getMessages, deleteMessage};

windowVar.serverCounter = 0;
windowVar.arr1=[];

server.js:

var m= require('./myModule');

lors de l'exécution du serveur dans node.js, l'erreur suivante apparaît:

ReferenceError: la fenêtre n'est pas définie sur l'objet. <anonymous>

Si j'ai bien compris, window est une propriété du navigateur, mais comment puis-je résoudre l'erreur dans ce cas? Toute aide est appréciée 

3
user8244016

window est un navigateur qui n’existe pas sur le nœud.

Si vous voulez vraiment créer un global , utilisez plutôt global:

global.windowVar = /*...*/; // BUT PLEASE DON'T DO THIS, keep reading

global est l'identifiant du noeud pour l'objet global, comme window est sur les navigateurs.

Mais, il n'est pas nécessaire de créer des variables véritablement globales dans les programmes Node. Au lieu de cela, créez simplement un module global:

var windowVar = /*...*/;

... et puisque vous l'incluez dans votre exports, d'autres modules peuvent accéder à l'objet auquel il fait référence, si nécessaire.

12
T.J. Crowder

L'objet window n'est présent que dans le contexte du navigateur. Lors de l'exécution de l'application sur nodejs, aucun objet window n'est disponible. Si vous souhaitez partager vos variables ou fonctions sur plusieurs fichiers, vous devez utiliser require et exports

client.js

module.exports = {
    fun1: function(){

    },
    counter: 0 
}

et quelque chose comme dans myModule.js

var client = require('./client');
0
Arun Redhu