.env 解析與驗證工具

貼上一個 .env 檔案——或者把它拖到輸入框上——即可拿回解析、檢查並附帶說明的結果:每個鍵都列在表格裡且值已遮罩,每個問題都連同行號一起列出。重複的鍵、無效的名稱、根本不是指定敘述的行、會悄悄覆寫預設值的空值。它完全在你的瀏覽器中執行,檔案絕不會被上傳,因為正式環境的 .env 就是一捆秘密,應當按秘密來對待。

檢查什麼,為什麼

.env 格式是一種慣例,而不是標準,這正是檔案悄悄腐壞的原因。每個載入器都認同 KEY=VALUE,卻在其他一切問題上各執一詞:是否去除 export 前綴、是否認可引號、行內註解是否終結一個值,以及——最危險的——同一個鍵的兩個定義中哪一個勝出。本驗證器採用最大公約數規則,並報告載入器們產生分歧的地方:一個鍵被定義了兩次並給出兩個行號、一個任何 shell 都不會接受的名稱、一個只開不閉的引號、一行連等號都沒有的內容。空值會被標記而不是判為失敗,因為 KEY= 是合法的——但它會用空字串覆寫應用程式的任何預設值,而這正是服務在一台機器上能跑、在另一台上跑不起來的最常見原因。

隱私設計本身就是功能。一個正式環境 .env 把資料庫密碼、API 金鑰和工作階段秘密集中在一個小檔案裡,而最自然的除錯動作——把它貼到某處求助——恰恰就是外洩。AI 聊天、問題追蹤系統和團隊頻道都會保留副本,往往可搜尋,往往永久保存。因此本工具遵循與 日誌解析器 和 憑證產生器 相同的規則:敏感輸入永不離開瀏覽器,值在螢幕上遮罩顯示,唯一的匯出是你主動下載的檔案。配套文章 env 檔案是秘密外洩之地 講述了檔案本身的衛生習慣——什麼該放進去、什麼不該、以及檔案一旦外洩該怎麼辦。

常見問題

把正式環境的 .env 貼到這裡安全嗎?

安全——這正是本工具的意義所在。解析完全在你的瀏覽器中執行:沒有上傳,沒有伺服器往返,你貼上的任何內容都不會被傳輸或儲存到任何地方。值在螢幕上預設遮罩,因此螢幕共享或截圖也不會洩漏它們。把 .env 貼進 AI 聊天、工單或團隊訊息則完全不同,那些地方都會保留副本——關於 env 檔案與秘密洩漏 的文章解釋了更安全的習慣。

既然最後一個勝出,重複鍵為什麼還重要?

因為編輯檔案的人不知道哪一個勝出。他們改了第 4 行的值,重新部署,然後眼睜睜看著什麼都沒發生——載入器悄悄用了第 41 行。更糟的是,有些框架取第一個定義,有些取最後一個,於是同一個檔案在整套技術堆疊裡的行為都不一樣。一個鍵、一行、一個值:驗證器會把每個重複鍵連同兩個行號一起列出,好讓失效的那一行被刪掉。

我的應用程式讀取了一個 .env 裡沒有的變數。怎麼找出它們?

把你的程式碼或設定貼到用法輸入框裡。解析器會擷取每一個被參照的名稱——process.env.X、process.env[’X’]、import.meta.env.X、${X} 和 $X——並雙向報告:程式碼參照了但檔案從未定義的名稱(這些會在執行時變成 undefined,通常還是在最糟糕的時刻),以及檔案定義了但沒有任何地方參照的鍵(死設定,而且出乎意料地常常還保存著有效的秘密)。

什麼算無效的鍵?

任何不是以字母或底線開頭、後面跟著字母、數字和底線的內容。以數字開頭、包含連字號或點號、或帶有多餘空格的鍵,會被許多載入器和 shell 丟棄或弄壞——一個在 bash 裡能乾淨載入的檔案,可能正因為這個原因在 Node 載入器裡失敗。驗證器會連同行號一起標記它們;條目表裡仍會顯示這一列,讓你看到會遺失什麼。

匯出的檔案包含真實值嗎?

包含。JSON 和 YAML 下載以及複製的 JSON 都是真實設定——遮罩是顯示層面的保護,而不是對你自己資料的刪減。請像對待 .env 本身一樣對待匯出檔案:絕不要提交到公開儲存庫,絕不要附在工單裡。如果需要一個可以安全分享的版本,分享遮罩後的截圖或鍵列表即可。