首頁 >web前端 >js教程 >Node.js v .env 檔案、導入模組和權限模型

Node.js v .env 檔案、導入模組和權限模型

WBOY
WBOY原創
2024-08-09 22:37:03360瀏覽

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

? INI 檔案的路徑是必要的,因為 Node.js 沒有為 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 進程期間對特定資源的訪問,稱為權限模型。該 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 標誌,並檢查 --allow-wasi 以允許建立 WASI 實例

結論

我們有很多新工具來為我們的應用程式載入環境變量,一種導入程式碼中所需的預先載入 ES 模組的方法,以及一個新的權限模型來提高系統的安全性。

請繼續關注 Node.js 的博客,這個團隊正在每個版本中添加很棒的功能!我們在 v22.6.0 中提供了初始 TypeScript 支援和使用 DevTools 的網路檢查。

以上是Node.js v .env 檔案、導入模組和權限模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn