Ich habe ein allgemeines und hohes Verständnis der Funktionalität und der Natur von Node.js 'require()
Funktion und module.exports
. Es gibt jedoch einige Verhaltensweisen, die für mich keinen Sinn ergeben.Verwirrung über das Verhalten von Node.js, wenn eine Datei ein Modul mit nichts benötigt
Nehmen wir an, ich habe zwei sehr einfache einzeilige Dateien a.js
und b.js
.
In a.js
:
require('./b.js');
und in b.js
:
console.log("testing");
und wenn ich node a.js
im Terminal laufen, dann ist hier, was angemeldet ist:
$ node a.js
testing.
was bedeutet, dass nur durch Wenn Sie eine Datei/ein Modul benötigen, ist der Inhalt der angeforderten Datei expo sed auf die Datei, die die Anforderung ausgibt (, nicht wahr?)
Jetzt a.js
dazu ich ändern:
require('./b.js');
testFunc(1, 2);
und b.js dazu:
var testFunc = function(a, b) {
var result = a + b;
return result;
}
und Lauf wieder node a.js
im Terminal:
$ node a.js
/demo/a.js:3
testFunc(1, 2);
^
ReferenceError: testFunc is not defined
......
Also, was ist hier los? Offensichtlich kann im ersten Beispiel, indem b.js
gefordert wird, a.js
auf Inhalt innerhalb von b.js
zugreifen. Im zweiten Beispiel ist jedoch die in b.js
definierte Funktion überhaupt nicht zugänglich, wie aus ReferenceError: testFunc is not defined
ersichtlich ist. Was ist der Trick hier?
Liegt das daran, dass require()
nur das erforderliche Skript ausführt, ohne den Inhalt tatsächlich der anfordernden Datei auszusetzen? Um den Inhalt eines anderen Moduls zu verwenden, muss dieses Modul unter Verwendung von module.exports
?
Ich habe keine Ahnung, was diese Frage mit ES6 zu tun hatte oder auszudrücken. – Bergi