ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js v .env ファイル、インポート モジュール、および権限モデル

Node.js v .env ファイル、インポート モジュール、および権限モデル

WBOY
WBOYオリジナル
2024-08-09 22:37:03351ブラウズ

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

Node.js v20.6 は、2023 年 10 月 24 日から LTS バージョンの一部である素晴らしい新機能を備えてリリースされました。見てみましょう!

INI 設定ファイル

dotenv パッケージに別れを告げ、Node.js は .env ファイルから環境変数を読み込めるようになりました。

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

? Node.js が INI ファイルのデフォルト名を選択しなかったため、INI ファイルへのパスが必要です。

? INI ファイルが存在しない場合、ノード プロセスは失敗していないため、環境変数を指定せずに実行を開始してください。

NODE_OPTIONS をロード中

次の例のように、INI 構成ファイルを使用して Node.js の特定の環境変数 (NODE_OPTIONS など) をロードできます。

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

同じ方法でこれを使用できます:

node --env-file .env index.js

ESモジュールのプリロード

--import フラグを使用して起動時に ES モジュールをプリロードします。モジュールは、エントリ ポイントを含め、アプリケーション コードが実行される前にロードされます。

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

このフラグは、CommonJS モジュールをロードするために使用されるよく知られた --require フラグに似ています。

? --require でプリロードされたモジュールは、--import でプリロードされたモジュールよりも前に実行されます。

権限モデル

Node.js プロセスの実行中に特定のリソースへのアクセスを制限するための新しいメカニズムがあり、それは Permission Model と呼ばれます。 API はフラグ --experimental-permission の背後にあり、これを有効にすると、明示的に許可されていないすべてのリソースへのアクセスが制限されます。

ファイル システムのアクセス許可

--allow-fs-read フラグは、* を使用したすべての FileSystemRead 操作、または絶対ルートを使用した特定のパスへの操作を許可します。

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

特定のパスへのアクセスのみを許可するには、絶対ルートを使用する必要があります

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

?初期化モジュールも許可する必要があります。そうしないと、Node.js プロセス自体によってindex.js ファイルを読み込むことができません。

?を使用できます。作業ディレクトリへのアクセスを許可しますが、ファイル (./index.js など) へのパスの指定には使用できません。

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

--allow-fs-write フラグにより​​、*.
を使用した特定のパスまたはファイル システム全体へのアクセスが許可されます。

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

子プロセス

権限モデルが有効になっている場合、プロセスはデフォルトで子プロセスを生成できません。この操作を許可するには --allow-child-process を使用する必要があります。 Index.js.
に次のコードを使用してみましょう。

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

権限モデルを有効にしてこのスニペットを実行するには、次のコマンドを使用してindex.jsを実行する必要があります:

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

?子プロセスはデフォルトでは権限モデルを継承しないため、new-file.txt は正常に作成されます。

その他のオプション

この権限モデルでワーカー スレッドを作成する場合は --allow-worker フラグをチェックし、WASI インスタンスの作成を許可するには --allow-wasi をチェックします

結論

アプリケーションの環境変数をロードするための新しいツール、コードで必要なプリロード ES モジュールをインポートする方法、システムのセキュリティを強化するための新しい権限モデルが多数あります。

Node.js のブログにご注目ください。このチームはすべてのバージョンに素晴らしい機能を追加しています。 v22.6.0 では、初期の TypeScript サポートと DevTools を使用したネットワーク検査が提供されています。

以上がNode.js v .env ファイル、インポート モジュール、および権限モデルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。