Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

處理依賴關係

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

允許函數使用外部 Node.js 模塊以及本地數據。 Node.js 中的依賴項由npm管理,並在名為package.json的元數據文件中表示。 Cloud Functions Node.js 運行時通常支持使用npmyarn進行安裝。

要為您的函數指定依賴項,請將其添加到您的package.json文件中。

在此示例中, package.json文件中列出了一個依賴項:

{
  "dependencies": {
    "escape-html": "^1.0.3"
  }
}

然後將依賴項導入函數中:

JavaScript

const escapeHtml = require('escape-html');

// Return a greeting with the input HTML-escaped.
exports.hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
});

打字稿

import * as escapeHtml from 'escape-html';

// Return a greeting with the input HTML-escaped.
export let hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
}

包括本地 Node.js 模塊

您還可以將本地 Node.js 模塊作為函數的一部分。您可以通過使用file: prefixpackage.json中聲明您的模塊來實現此目的。在以下示例中, mymodule指的是您的模塊名稱,而mymoduledir是包含您的模塊的目錄:

{
  "dependencies": {
    "mymodule": "file:mymoduledir"
  }
}

此本地模塊的代碼應存儲在函數根目錄中的node_modules文件夾以外的其他位置。

TypeScript 的附加步驟

當您使用具有類型信息的庫時,TypeScript 對您的幫助最大。這讓 TypeScript 可以捕獲語法錯誤,並讓編輯器為您提供更好的自動完成建議。一些庫,比如firebase-adminfirebase-functions ,附帶了 TypeScript 定義。

許多庫不提供自己的 TypeScript 定義。 DefinitiveTyped項目為最流行的節點庫提供社區維護的定義。 DefinitiveTyped 以相同的 NPM 包名稱發布這些定義,但在“@types”組織內。例如,您可以使用以下命令安裝uuid庫的類型信息:

npm install @types/uuid

隨著您對 TypeScript 越來越熟悉,您可能會發現自己結合了這兩種安裝:

npm install uuid @types/uuid

類型依賴項應該與庫依賴項相同。例如,您不應將uuid保存為普通依賴項,而將@types/uuid保存為開發依賴項或對等依賴項。

加載 Node.js 模塊

使用 Node.js 的require()函數來加載您已安裝的任何 Node.js 模塊。您還可以使用require()函數導入與函數一起部署的本地文件。

如果您在 TypeScript 中編寫函數,請以相同的方式使用import語句來加載您已安裝的任何 Node.js 模塊。

使用私有模塊

您可以通過在函數目錄中的.npmrc文件中提供用於向註冊表進行身份驗證的設置來使用私有 npm 模塊

來自 Artifact Registry 的私有模塊

Artifact Registry Node.js 包存儲庫可以為您的函數託管私有模塊。部署到 Cloud Functions 時,構建過程將自動為Cloud Build 服務帳戶生成 Artifact Registry 憑據。您只需在.npmrc中列出 Artifact Registry 存儲庫,而無需生成其他憑據。例如:

@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true

來自其他存儲庫的私有模塊

npm 文檔解釋瞭如何創建自定義只讀訪問令牌。我們不鼓勵使用在主目錄中創建的.npmrc文件,因為它包含一個讀寫令牌。部署期間不需要寫入權限,但可能會帶來安全風險。

如果您不使用私有存儲庫,請不要包含.npmrc文件,因為它會增加您的函數的部署時間。

文件格式

如果您使用.npmrc文件來設置自定義身份驗證令牌,則它應該包括下面顯示的行。將<YOUR_AUTH_TOKEN>替換為 NPM 提供的身份驗證令牌。

//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>