將 Cloud Functions 遷移至更新的 Node.js 執行階段

Node.js 6 執行階段已經淘汰。為了確保您的函式位於獲得支援的 Node.js 版本,請將函式遷移至 Node.js 8 或 Node.js 10。在 2020 年 4 月 22 日之後,使用 Node.js 6 的函式部署將遭到封鎖。在此時間之後持續使用 Node.js 6 的 Cloud Functions 可能遭到停用。

Node.js 8 及 Node.js 10 執行階段的變更,可能需要您修改函式原始碼,以使用新的執行階段。本頁說明變更內容,並提供準則協助遷移現有函式至新執行階段。

Node.js 8 執行階段的變更

Node.js 6 及 Node.js 8 執行階段之間變更了背景函式簽章。

Node.js 6 背景函式的範例如下:

exports.nodejs6BackgroundFunction = (event, callback) => {
  let data = event.data;
  let context = event.context;
  // ... the rest of your function
};

請注意,event 引數包含 datacontext 屬性。 從 Node.js 8 執行階段開始,datacontext 屬性已由 event 物件擷取,並納入函式簽章之中:

exports.nodejs8AndAboveBackgroundFunction = (data, context, callback) => {
  // ... the rest of your function is unchanged
};

這項變更可簡化先前 event 引數中對 datacontext 物件的參照。詳情請參閱背景函式參數一文。

如要更新 Node.js 6 背景函式以便在新的 Node.js 執行階段執行:

  1. 請將函式簽章由 (event, callback) 變更為 (data, context, callback)

  2. 請分別將參照由 event.dataevent.context 變更為 datacontext

Node.js 10 執行階段的變更

除了 Node.js 8 執行階段的變更以外,Node.js 10 執行階段變更了由執行階段預先定義的環境變數。請參閱自動設定的環境變數一文,其中完整說明 Node.js 10 執行階段與之前執行階段之間設定環境變數的不同之處。

如要讓舊的 Node.js 函式在 Node.js 10 執行階段執行,您可能需要變更自己使用的任何預先定義環境變數。請更新程式碼,盡可能使用替代變數,或是在部署函式時自行設定。我們建議的最佳做法,是不要仰賴您並未明確設定的環境變數。

Node.js 10 執行階段不會再設定以下環境變數:

環境變數 遷移
CODE_LOCATION 於部署函式時設定。您的程式碼位置為 /srv
ENTRY_POINT 改為使用 FUNCTION_TARGET 環境變數。
GOOGLE_CLOUD_PROJECT 於部署函式時設定。
GCP_PROJECT 於部署函式時設定。
GCLOUD_PROJECT 於部署函式時設定。
GOOGLE_CLOUD_REGION 於部署函式時設定。
FUNCTION_REGION 於部署函式時設定。
FUNCTION_NAME 改為使用 K_SERVICE 環境變數。
FUNCTION_IDENTITY 於部署函式時設定。
FUNCTION_MEMORY_MB 於部署函式時設定。
FUNCTION_TIMEOUT_SEC 於部署函式時設定。
FUNCTION_TRIGGER_TYPE 改為使用 FUNCTION_SIGNATURE_TYPE 環境變數。請參閱使用環境變數一文以瞭解使用詳細資料。
OLDPWD 已無法使用。
SHLVL 已無法使用。
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Functions Documentation