2016-07-16 2 views
2

Ich habe ein gutes Stück gesucht, um zu sehen, ob das möglich ist. Soweit ich das verstanden habe, ist es das nicht.Ist es möglich, ein Objekt in Node.js zu "fordern", das auf den globalen Bereich der importierenden Dateien zugreifen kann?

In meiner main.js Datei, ich habe diesen Code:

var commands = require('./commands.js'); 

Es ein Objekt aus commands.js importiert wird, dass in der folgenden Weise dargestellt:

module.exports = { 
    var1: "something" + somevar, 
    var2: "something" + someothervar, 
    ... 
} 

Das ist mir die zugreifen kann Objekt commands aus der main.js Datei, als ob es gerade innerhalb main.js selbst deklariert wurde. Ich stoße jedoch auf ein Problem, wenn ich die exportierende commands.js Datei auf den globalen Variablenbereich main.js zugreifen lassen möchte. Nehmen wir an, dass somevar und someothervar Teil des globalen Bereichs von main.js sind, wenn ich einen Wert von commands bekommen möchte, möchte ich nicht, dass sie 'undefiniert' sind.

Lange Rede kurzer Sinn, ich möchte dieses importierte Objekt behandeln genau, als ob es wurde in main.js gerade erklärt.

Ich versuche, einen Chatbot für Discord zu kodieren, und aus Gründen der Ordentlichkeit und Organisation wollte ich die Liste der Funktionen haben, die sie getrennt von dem Code verwenden kann, der sie verarbeitet. Ist das die Mühe wert? Gibt es einen besseren Weg, dies zu tun? Ich jongliere auch gerade um SQL und versuche, das möglichst modulare/anpassbare Programm zu entwickeln.

Antwort

0

Dies ist nicht möglich, wenn Sie ein Modul exportieren, wären alle Variablen aufgelöst worden.

Sie werden immer das Objekt mit allen Ausdrücken erhalten ausgewertet, wenn Sie

importieren würde ich machen var1 und var2 als Funktionen

module.exports = { 
    var1: function(someVar){ return "something" + someVar}, 
    var2: function(someothervar) {return "something" + someothervar}, 
    ... 
} 

Now when you import it in main.js ,pass your somevar and someothervar 
+0

erwarte ich vorschlagen würde ich die 'module.exports machen müssen 'Objekt Elemente alle Zeichenfolgen, und dann verwenden. Eval() bei der Verarbeitung sie möglicherweise. – MrSp33dy123

+0

können Sie eine andere Route verwenden –

+0

Ihr Vorschlag ist eine gute Idee, eine, die ich eigentlich in Erwägung gezogen hatte, früher zu betrachten, aber aus irgendeinem Grund vergessen. Danke für die Antwort. – MrSp33dy123

Verwandte Themen