Firebase is back at Google I/O on May 10! Register now

Obsługa zależności

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Funkcja może używać zewnętrznych modułów Node.js, a także danych lokalnych. Zależności w Node.js są zarządzane za pomocą npm i wyrażane w pliku metadanych o nazwie package.json . Środowisko wykonawcze Cloud Functions Node.js zazwyczaj obsługuje instalację przy użyciu npm lub Yarn .

Aby określić zależność dla swojej funkcji, dodaj ją do pliku package.json .

W tym przykładzie zależność jest wymieniona w pliku package.json :

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

Zależność jest następnie importowana w funkcji:

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

Maszynopis

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

W tym lokalne moduły Node.js

Możesz także dołączyć lokalne moduły Node.js jako część swojej funkcji. Możesz to osiągnąć, deklarując swój moduł w package.json za pomocą file: prefix . W poniższym przykładzie mymodule odnosi się do nazwy twojego modułu, a mymoduledir to katalog zawierający twój moduł:

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

Kod tego modułu lokalnego powinien być przechowywany w innym miejscu niż folder node_modules w katalogu głównym Twojej funkcji.

Dodatkowe kroki dla TypeScript

TypeScript pomaga najbardziej, gdy korzystasz z bibliotek zawierających informacje o typie. Dzięki temu TypeScript wyłapuje błędy składniowe, a redaktorom daje lepsze sugestie autouzupełniania. Niektóre biblioteki, takie jak firebase-admin i firebase-functions , są dostarczane z definicjami języka TypeScript.

Wiele bibliotek nie zapewnia własnej definicji języka TypeScript. Projekt ZdecydowanieTyped zapewnia obsługiwane przez społeczność definicje najpopularniejszych bibliotek węzłów. ZdecydowanieTyped publikuje te definicje pod tą samą nazwą pakietu NPM, ale wewnątrz organizacji „@types”. Na przykład można zainstalować informacje o typie biblioteki uuid w następujący sposób:

npm install @types/uuid

W miarę poznawania języka TypeScript może się okazać, że połączysz obie instalacje:

npm install uuid @types/uuid

Zależności typu powinny być tego samego rodzaju co zależność biblioteki. Na przykład nie należy zapisywać uuid jako normalnej zależności, a @types/uuid jako zależności deweloperskiej lub zależności równorzędnej.

Ładowanie modułów Node.js

Użyj funkcji Node.js require() , aby załadować dowolny zainstalowany moduł Node.js. Możesz także użyć funkcji require() do importowania plików lokalnych, które wdrażasz wraz z funkcją.

Jeśli piszesz funkcje w języku TypeScript, użyj instrukcji import w ten sam sposób, aby załadować dowolny zainstalowany moduł Node.js.

Korzystanie z prywatnych modułów

Możesz użyć prywatnego modułu npm , podając ustawienia uwierzytelniania w rejestrze w pliku .npmrc w katalogu funkcji.

Prywatne moduły z Artifact Registry

Repozytorium pakietów Artifact Registry Node.js może zawierać prywatne moduły dla Twojej funkcji. Podczas wdrażania w Cloud Functions proces kompilacji automatycznie wygeneruje poświadczenia Artifact Registry dla konta usługi Cloud Build . Wystarczy, że wymienisz repozytorium Artifact Registry w pliku .npmrc bez generowania dodatkowych poświadczeń. Na przykład:

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

Prywatne moduły z innych repozytoriów

Dokumentacja npm wyjaśnia, jak tworzyć niestandardowe tokeny dostępu tylko do odczytu. Odradzamy używanie pliku .npmrc utworzonego w katalogu domowym, ponieważ zawiera on token do odczytu i zapisu. Uprawnienia do zapisu nie są wymagane podczas wdrażania i mogą stanowić zagrożenie dla bezpieczeństwa.

Nie dołączaj pliku .npmrc , jeśli nie korzystasz z prywatnych repozytoriów, ponieważ może to wydłużyć czas wdrażania funkcji.

Format pliku

Jeśli używasz pliku .npmrc do ustawienia niestandardowego tokenu uwierzytelniania, powinien on zawierać wiersz pokazany poniżej. Zastąp <YOUR_AUTH_TOKEN> tokenem uwierzytelniającym dostarczonym przez NPM.

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