Catch up on everthing we announced at this year's Firebase Summit. Learn more

處理依賴

允許函數使用外部 Node.js 模塊以及本地數據。在Node.js的依賴性與管理NPM和所謂的元數據文件中表達package.json 。雲功能的Node.js運行時通常支持使用安裝NPM

要指定你的函數的依賴,將其添加到您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 模塊作為函數的一部分。您可以通過聲明你的模塊中實現這一目標package.json使用file:前綴。在下面的例子中, mymodule是指你的模塊名稱和mymoduledir是包含你的模塊目錄:

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

這個本地模塊的代碼應該存放的地方以外的node_modules你的函數的根目錄文件夾內。

TypeScript 的附加步驟

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

許多庫不提供自己的 TypeScript 定義。該DefinitelyTyped項目提供了最流行的節點庫社區維護的定義。 FreedomTyped 以相同的 NPM 包名稱發布這些定義,但位於“@types”組織內部。例如,您可以安裝的類型信息uuid與以下庫:

npm install @types/uuid

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

npm install uuid @types/uuid

類型依賴應該與庫依賴的類型相同。例如,你不應該保存uuid作為一個正常的依賴和@types/uuid作為一個開發依賴或同行的依賴。

加載 Node.js 模塊

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

如果你在寫打字稿功能,使用import語句以同樣的方式加載任何Node.js的模塊中,你已經安裝了。

使用私有模塊

為了使用一個私人NPM模塊,您必須提供在故宮登記證書(身份驗證令牌) .npmrc位於函數的目錄文件。在NPM文檔介紹了如何創建自定義的只讀訪問令牌。我們不鼓勵使用.npmrc在主目錄中創建的文件,因為它包含讀寫令牌。部署期間不需要寫入權限,可能會帶來安全風險。

不包括.npmrc如果你不使用私有倉庫,因為它可以增加你的功能部署時間的文件。

文件格式

如果您使用的是.npmrc文件設置自定義身份驗證令牌,它應該包括如下所示的線。替換<YOUR_AUTH_TOKEN>與您的NPM提供的身份驗證令牌。

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