「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Node.js v .env ファイル、インポート モジュール、および権限モデル

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

2024 年 8 月 22 日に公開
ブラウズ:782

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 を使用したネットワーク検査が提供されています。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3