Node.js v20.6 已發布,其中包含令人驚嘆的新功能,這些新功能是 2023 年 10 月 24 日起 LTS 版本的一部分。讓我們拭目以待!
告別 dotenv 套件,現在 Node.js 可以從 .env 檔案載入環境變數。
node --env-file path/to/.env index.js
? INI 檔案的路徑是必要的,因為 Node.js 沒有為 INI 檔案選擇預設名稱。
?如果 INI 檔案不存在,則節點進程不會失敗,只需在沒有環境變數的情況下開始運行即可。
您可以使用 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
在啟動時使用 --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中文網其他相關文章!