node.js Prozess.env: Zuweisung.env-Eigenschaft auf undefined Ergebnisse in einem string-Typ?
Den node.js - Prozess.env
Objekt scheint zu Prozess-Eigenschaft-Zuordnung anders als normale JavaScript-Objekte. Wie bekomme ich die process.env
Objekt zu handeln wie ein normales Objekt, in diesem Fall?
Unten ist Beispielcode zur Veranschaulichung der unterschiedlichen Zuordnung zu Verhalten. Aus irgendeinem Grund die Zuordnung undefined
um eine Eigenschaft, die Ergebnisse in einem string-Typ (nur für process.env
):
function demo(description, dict) {
console.log(description);
dict.A = undefined;
console.log('typeof dict.A: ' + typeof dict.A + '\n');
}
demo('Passing empty object:', {});
demo('Passing process.env:', process.env);
Die resultierende Ausgabe ist unterschiedlich, je nachdem, ob ein leeres Objekt {}
oder die process.env
Objekt übergeben wurde:
$ node test.js Vorbei an leeren Objekt: typeof dict.A: undefined Übergabe-Prozess.env: typeof dict.A: string
InformationsquelleAutor Leftium | 2012-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
process.env
Objekt zwingt alle seine Eigenschaften vom Typ "string", da die Umgebungsvariablen müssen immer strings sein. Ich bin mir nicht ganz sicher auf Ihren Zweck, aber vielleicht könnten Sie versuchen, eine dieser als workaround:Kopieren Sie die
process.env
Objekt in ein neues Objekt, das verhält sich dann in der Regel:Zuweisen
''
einer Eigenschaft statt, wenn Sie es wünschen, werden 'leere'Wird dann false zurück, wenn Sie behandeln es als einen booleschen
Oder als Jonathan Lonowski Punkte aus, können Sie auch
delete
den Schlüssel ausprocess.env
Hoffe, das hilft
Verdienen Sie mehr als 6 Stimmen für diesen. Dies ist definitiv unerwartet ist, wenn Sie verwenden, um javascript (wenn auch vielleicht nicht wenn Sie wirklich denken, wie die bash arbeitet . . .).
Vielen Dank für den Hinweis auf die Verwendung von
''
als falsyDas ist absolut retarded... Danke für die Aufklärung, obwohl ich dachte, ich verlor meinen Verstand.
InformationsquelleAutor LukeGT
Dies geschieht, weil
process.env
Kräfte, alle seine Werte zuString
:Wenn Sie entfernen müssen Sie eine Umgebungsvariable, müssen Sie
delete
:InformationsquelleAutor Jonathan Lonowski