將 Cloud 函式遷移至較新的 Node.js 執行階段

Node.js 6 執行階段已遭淘汰。為了確保您的函式是採用受支援的 Node.js 版本,請將函式遷移至 Node.js 8Node.js 10。在 2020 年 4 月 22 日之後,使用 Node.js 6 的函式部署將遭到封鎖,屆時,繼續使用 Node.js 6 的 Cloud 函式可能會遭到停用。

為因應 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 10 執行階段中執行較舊的 Node.js 函式,您可能得變更自己使用的任何預先定義環境變數。請更新程式碼,儘可能使用替代變數,或是在部署函式時自行設定。我們建議的最佳做法,是不要仰賴您並未明確設定的環境變數。

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