„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Node.js v .env-Dateien, Importmodule und Berechtigungsmodell

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

Veröffentlicht am 22.08.2024
Durchsuche:723

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 derselben Methode verwenden:

node --env-file .env index.js

ES-Module vorab laden

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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3