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

Umgang mit Abhängigkeiten

Eine Funktion darf sowohl externe Node.js-Module als auch lokale Daten verwenden. Abhängigkeiten in Node.js werden mit verwalteten npm und in einer Metadaten - Datei mit dem Namen ausgedrückt package.json . Die Wolke Functions Node.js Laufzeiten im Allgemeinen unter Verwendung der Installation unterstützen NPM oder Garn .

Um eine Abhängigkeit für Ihre Funktion, fügen Sie sie angeben package.json Datei.

In diesem Beispiel wird eine Abhängigkeit in der aufgelisteten package.json - Datei:

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

Die Abhängigkeit wird dann in die Funktion importiert:

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')}!`);
});

Typoskript

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')}!`);
}

Einschließlich lokaler Node.js-Module

Sie können auch lokale Node.js-Module als Teil Ihrer Funktion einschließen. Sie können dies erreichen , indem Ihr Modul in deklarieren package.json mit der file: Präfix . Im folgenden Beispiel mymodule bezieht sich auf Ihre Modulnamen und mymoduledir ist das Verzeichnis, in das Modul:

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

Der Code für diese lokale Modul sollte irgendwo anders gespeichert werden als die node_modules Ordner in Ihrem Stammverzeichnis der Funktion.

Zusätzliche Schritte für TypeScript

TypeScript hilft Ihnen am meisten, wenn Sie Bibliotheken mit Typinformationen verwenden. Dadurch kann TypeScript Syntaxfehler abfangen und Editoren geben Ihnen bessere Vorschläge zur automatischen Vervollständigung. Einige Bibliotheken, wie firebase-admin und firebase-functions , Schiff mit Typoskript Definitionen enthalten.

Viele Bibliotheken bieten keine eigene TypeScript-Definition. Das DefinitelyTyped Projekt bietet Community gepflegt Definitionen für die beliebtestenen Knoten Bibliotheken. DefinitelyTyped veröffentlicht diese Definitionen unter demselben NPM-Paketnamen, jedoch innerhalb der Organisation "@types". Zum Beispiel können Sie die Typinformationen für die Installation von uuid - Bibliothek mit dem folgenden:

npm install @types/uuid

Wenn Sie sich mit TypeScript vertraut machen, werden Sie möglicherweise beide Installationen kombinieren:

npm install uuid @types/uuid

Typabhängigkeiten sollten vom gleichen Typ sein wie die Bibliotheksabhängigkeit. Zum Beispiel sollten Sie nicht sparen uuid als normale Abhängigkeit und @types/uuid als Entwickler Abhängigkeit oder Peer - Abhängigkeit.

Laden von Node.js-Modulen

Verwenden Sie die Node.js require() Funktion laden alle Node.js Modul Sie installiert haben. Sie können auch die Verwendung require() Funktion auf lokale Dateien importieren Sie neben Ihrer Funktion bereitstellen.

Wenn Sie Funktionen in Typoskript schreiben, die verwenden import - Anweisung in der gleichen Art und Weise zu laden alle Node.js Modul Sie installiert haben.

Private Module verwenden

Um einen verwenden privaten npm Modul , müssen Sie die Anmeldeinformationen (Auth - Token) für die NPM - Registrierung in einer .npmrc Datei in der Funktion des Verzeichnis. Die npm Dokumentation erklärt , wie benutzerdefinierte erstellen Nur - Lese-Zugriffstoken. Wir raten mit der .npmrc Datei im Home - Verzeichnis erstellt , weil es eine Lese-Schreib - Token enthält. Schreibberechtigungen sind während der Bereitstellung nicht erforderlich und können ein Sicherheitsrisiko darstellen.

Sie sind nicht die .npmrc Datei , wenn Sie nicht private Repositories verwenden, da es die Bereitstellungszeit für Ihre Funktionen zu erhöhen.

Datei Format

Wenn Sie eine verwenden .npmrc Datei eine benutzerdefinierte zu setzen Auth - Token, sollte es die Zeile weiter unten enthalten. Ersetzen Sie <YOUR_AUTH_TOKEN> mit NPM-Authentifizierungs - Token versehen.

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