依存関係の扱い

関数では、他のローカルデータだけでなく、他の Node.js モジュールも使用できます。Node.js における依存関係は npm で管理され、関数に付属する package.json というメタデータ ファイルで表現されます。

gcloud を使用してデプロイする場合は、package.json で宣言された依存関係がデプロイ時に Cloud Functions によってダウンロードされます。また、完全に実体化された依存関係を関数パッケージ内に事前にパッケージ化できます。node_modules.gcloudignore にリストされていないことを確認してください。

Firebase CLI を使用してデプロイすると、ローカルの node_modules フォルダは無視されるので、package.json で依存関係を指定する必要があります。package.json ファイルについては、npm docs で詳しく説明されています。

この例では、依存関係は package.json ファイルにリストされています。

{
  "dependencies": {
    "uuid": "^3.0.1"
  }
}

依存関係は関数にインポートされます。

JavaScript

const uuid = require('uuid');

// Return a newly generated UUID in the HTTP response.
exports.getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
});

TypeScript

import * as uuid from 'uuid';

// Return a newly generated UUID in the HTTP response.
export let getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
}

npm を使用して Node.js モジュールをインストールする

Node.js モジュールをインストールする最も簡単な方法は、Cloud Function のあるフォルダで npm install --save コマンドを使用することです。たとえば、次のコマンドは uuid モジュールを追加します。

npm install --save uuid

これは、次の 2 つのステップを組み合わせたものです。

  1. package.json ファイルで、モジュールの最新バージョンを依存関係としてマークします。これは非常に重要です。Cloud Functions は、package.json ファイルで宣言されたモジュールのみをインストールします。
  2. モジュールを node_modules ディレクトリにダウンロードします。これにより、モジュールをローカルでの開発に使用できます。

TypeScript の追加手順

TypeScript は、型情報のあるライブラリを使用するときに役立ちます。TypeScript を使用すると、構文エラーを捕捉し、エディタの自動補完機能を強化できます。firebase-adminfirebase-functions などのライブラリには TypeScript の定義が含まれています。

多くのライブラリは独自の TypeScript 定義を提供しません。DefinitelyTyped プロジェクトでは、よく使用されるノード ライブラリの定義をコミュニティで管理しています。DefinitelyTyped は、これらの定義を同じ NPM パッケージ名で公開していますが、名前に「@types」が含まれています。たとえば、uuid ライブラリの型情報をインストールするには、次のコマンドを実行します。

npm install --save @types/uuid

TypeScript に慣れてきたら、次のように両方のインストールを組み合わせることもできます。

npm install --save uuid @types/uuid

型の依存関係は、ライブラリの依存関係と同じ種類でなければなりません。たとえば、通常の依存関係として uuid を保存した場合、dev 依存関係またはピア依存関係として @types/uuid を保存できません。

Node.js モジュールを読み込む

uuid モジュールのようにサードパーティのライブラリを使用するだけでなく、require(JavaScript)を使用して、インストール済みの Node.js モジュールを読み込むこともできます。require 関数は Node.js モジュールの名前を取得し、そのモジュールの exports オブジェクトを返します。

TypeScript で関数を記述する場合は、同じ方法で import を使用し、インストール済みの Node.js モジュールを読み込みます。import 関数は Node.js モジュールの名前を取得し、そのモジュールの exports オブジェクトを返します。

非公開モジュールの使用

非公開の npm モジュールを使用するには、関数のディレクトリにある .npmrc ファイルに npm レジストリの認証情報(認証トークン)を指定する必要があります。npm login コマンドを使用して npm にログインしたときに、ホーム ディレクトリにある .npmrc ファイルをコピーすることもできます。

非公開レポジトリを使用していない場合には .npmrc ファイルを追加しないでください。追加すると、関数のデプロイ時間が長くなる可能性があります。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。