2016-03-22 8 views
0

Was mache ich hier falsch? Ich definiere eine Variable in FILE1, dann erfordern FILE1 in FILE2, und ich brauche FILE2 in MAIN, so dass ich erwartet, in der Lage sein, Zugriff auf die globale var my_global von MAIN und FILE2, aber es wirft einen Fehler.Javascript Scope Fehler beim Aufruf aus einer anderen Datei

FILE1

var my_global=42; 

FILE2

require('FILE1'); 
var harvesterCount=12; 
console.log(harvesterCount+my_global); //throws error 
module.exports = function() {...} 

MAIN

require('FILE2'); 
console.log(my_global); //error here 

Die Fehlerrechnung (aus Screeps Konsole):

ReferenceError: my_global is not defined 
    at module.exports:8:5 
    at Object.module.exports.loop:6:5 
    at __mainLoop:1:12057 
    at eval:2:4 
    at Object.c.runCode:6:26869 
+0

mit node.js Sie versuchen? –

Antwort

0

Das Verhalten korrekt ist, und Sie sollten vielmehr die Variable exportieren. Für z.B.

var my_global=42; 
exports = { 
    my_global:my_global 
} 

Sie können die oben exportierte Variable verweisen

var m = require('file1'); 
console.log(m.my_global); 
0

Versuchen Sie, die Datei mit <script> Tag anstatt mit require

Und ich sehe in einer anderen answer von etwa require Stackoverflow zu verweisen. Hoffe das kann dir helfen.

require() ist nicht Teil Ihres Standard-JavaScript. Im Kontext zu Ihrer Frage und den Tags ist require() in Node.js eingebaut, um Module zu laden. Das Konzept ist ähnlich wie C/Java/Python/[weitere Sprachen hier einfügen] importiert oder enthält.

Das Konzept der Module ähnelt dem Hinzufügen von kleinen Bits JavaScript-Code über Tags. Anders als einen Tag hinzufügen, es die Datei nicht in den globalen Bereich Leck

+0

Dank Ihrer Post fand ich die Antwort hier: http://stackoverflow.com/questions/5311334/what-is-the-purpose-of-node-js-module-exports-and-how-do-you-use -it/5311377 # 5311377 Ich musste die globale Variable exportieren – Rilcon42

+0

Sie können '