本篇重點
- Netlify function 更新程式碼後,新設定的環境變數未被正確讀取
- 檢查環境變數是否設定在正確的環境 (Production / Deploy Preview / Branch deploys)
- 確認環境變數名稱是否正確
- 透過 Deploy project without cache 解決問題
問題情境
專案架設於 Netlify,並透過 GitHub 連動自動佈署。
更新程式碼後,function 使用新的環境變數,雖然已在 Netlify 後台新增並儲存變數,但程式始終沒有正確讀取。
排查流程
確認環境是否正確
Netlify 提供不同環境:
- Production:主要佈署來源,與正式網域綁定
- Deploy Preview:針對 PR 產生的測試環境
- Branch deploys:針對指定分支的佈署
若環境變數僅設定在 Deploy Preview 或 Branch deploys,Production 可能無法取得。
檢查後確認 Production 已正確設定,並且如果是免費方案的 Netlify 會部屬在全區域,無法設定環境變數部屬區域,只能指定各區域的變數值。
確認環境變數名稱拼字
常見錯誤包含:
- 拼錯大小寫(環境變數區分大小寫)
- 變數前後多餘空格
- 後台儲存時沒有正確提交
檢查後確認名稱正確無誤,程式碼與後台設定的環境變數名稱一致。
移除快取重新佈署
雖然後台顯示環境變數已更新,但 function 仍未讀到新值。嘗試在佈署頁面選擇:「Trigger deploy → Deploy project without cache」,清除快取後重新佈署。
重新部署並清除快取後,function 成功取得最新環境變數。
為什麼會發生?
Netlify 在部署過程中會建立建構快取 (build cache),其中可能包含舊的環境設定或編譯結果。
當環境變數更新後,如果 Netlify 沒有完全清除快取,舊的變數值可能仍會被沿用,導致新值無法被讀取。
結論
這次的問題並非環境變數設定錯誤,是 Netlify function 使用了快取的舊設定。透過清除快取並重新佈署後,function 才正確讀取到新環境變數。
未來遇到類似狀況,可以依照流程依序排查:
- 確認環境設定位置是否正確
- 確認拼字無誤
- 清除快取重新佈署