Heim  >  Artikel  >  Web-Frontend  >  Node.js v .env-Dateien, Importmodule und Berechtigungsmodell

Node.js v .env-Dateien, Importmodule und Berechtigungsmodell

WBOY
WBOYOriginal
2024-08-09 22:37:03338Durchsuche

Node.js v .env files, import modules, and Permission Model

Node.js v20.6 wurde mit erstaunlichen neuen Funktionen veröffentlicht, die ab dem 24. Oktober 2023 Teil der LTS-Versionen sind. Mal sehen!

Die INI-Konfigurationsdateien

Verabschieden Sie sich vom dotenv-Paket, jetzt kann Node.js Umgebungsvariablen aus einer .env-Datei laden.

node --env-file path/to/.env index.js

? Der Pfad zur INI-Datei ist erforderlich, da Node.js keinen Standardnamen für die INI-Datei gewählt hat.

? Wenn die INI-Datei nicht vorhanden ist, ist der Knotenprozess nicht fehlgeschlagen. Beginnen Sie einfach mit der Ausführung ohne die Umgebungsvariablen.

NODE_OPTIONS wird geladen

Sie können die spezifischen Umgebungsvariablen von Node.js (wie NODE_OPTIONS) mithilfe einer INI-Konfigurationsdatei wie im folgenden Beispiel laden:

NODE_NO_WARNINGS=1
NODE_OPTIONS="--experimental-permission --allow-fs-read=*"
TZ=Pacific/Honolulu
UV_THREADPOOL_SIZE=5

Sie können dies mit der gleichen Methode verwenden:

node --env-file .env index.js

Laden Sie ES-Module vor

Laden Sie ES-Module beim Start mit dem Flag --import vor. Das Modul wird geladen, bevor Anwendungscode ausgeführt wird, auch vor dem Einstiegspunkt.

node --import path/to/file.js index.js

Dieses Flag ähnelt dem bekannten Flag --require, das zum Laden von CommonJS-Modulen verwendet wird.

? Module, die mit --require vorinstalliert wurden, werden vor Modulen ausgeführt, die mit --import vorinstalliert wurden.

Berechtigungsmodell

Wir haben einen neuen Mechanismus namens Permission Model, um den Zugriff auf bestimmte Ressourcen während der Ausführung eines Node.js-Prozesses einzuschränken. Die API existiert hinter einem Flag --experimental-permission, das, wenn es aktiviert ist, den Zugriff auf alle nicht explizit erlaubten Ressourcen einschränkt.

Dateisystemberechtigungen

Das Flag --allow-fs-read ermöglicht alle FileSystemRead-Vorgänge mit * oder auf bestimmte Pfade mit absoluten Routen.

node --experimental-permission --allow-fs-read=* index.js

Um nur den Zugriff auf bestimmte Pfade zu ermöglichen, sollten Sie absolute Routen verwenden

node --experimental-permission --allow-fs-read=/path/to/index.js --allow-fs-read=/path/to/directory index.js

? Das Initialisierungsmodul muss ebenfalls zugelassen sein. Andernfalls kann die Datei index.js nicht vom Node.js-Prozess selbst geladen werden.

? Sie können verwenden. um den Zugriff auf das Arbeitsverzeichnis zu ermöglichen, aber Sie können damit nicht den Pfad zu einer Datei angeben (z. B. ./index.js).

node --experimental-permission --allow-fs-read=. index.js

Das Flag --allow-fs-write ermöglicht den Zugriff auf bestimmte Pfade oder das gesamte Dateisystem mit *.

node --experimental-permission --allow-fs-read=. --allow-fs-write=/tmp/ index.js

Untergeordneter Prozess

Wenn das Berechtigungsmodell aktiviert ist, kann der Prozess standardmäßig keinen untergeordneten Prozess erzeugen. Sie sollten den --allow-child-process verwenden, um diesen Vorgang zuzulassen. Lassen Sie uns den folgenden Code für index.js verwenden.

const childProcess = require('node:child_process');
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("./new-file.txt", "Hello, World!")']);

Um dieses Snippet mit aktiviertem Berechtigungsmodell auszuführen, sollten Sie index.js mit dem folgenden Befehl ausführen:

node --experimental-permission --allow-fs-read . --allow-child-process index.js

? Der untergeordnete Prozess erbt standardmäßig nicht das Berechtigungsmodell, deshalb wird die Datei „new-file.txt“ erfolgreich erstellt.

Weitere Optionen

Sie können das Flag --allow-worker aktivieren, wenn Sie Worker-Threads unter diesem Berechtigungsmodell erstellen möchten, und --allow-wasi, um die Erstellung von WASI-Instanzen zuzulassen

Abschluss

Wir haben viele neue Tools zum Laden von Umgebungsvariablen für unsere Anwendung, eine Methode zum Importieren der in unserem Code erforderlichen ES-Module vorab laden und ein neues Berechtigungsmodell, um die Sicherheit unserer Systeme zu erhöhen.

Bleiben Sie auf dem Laufenden über den Node.js-Blog, dieses Team fügt in jeder Version tolle Funktionen hinzu! Wir haben anfängliche TypeScript-Unterstützung und eine Netzwerkinspektion mit den DevTools in v22.6.0.

Das obige ist der detaillierte Inhalt vonNode.js v .env-Dateien, Importmodule und Berechtigungsmodell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn