Obsługa zależności

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

Aby określić zależność 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 również dołączyć lokalne moduły Node.js jako część swojej funkcji. Możesz to osiągnąć, deklarując swój moduł w package.json przy użyciu 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 funkcji.

Dodatkowe kroki dla TypeScript

TypeScript pomaga najbardziej w przypadku korzystania z bibliotek zawierających informacje o typie. Pozwala to na wyłapywanie błędów składni języka TypeScript, a edytorom zapewnia lepsze sugestie dotyczące autouzupełniania. Niektóre biblioteki, takie jak firebase-admin i firebase-functions , są dostarczane z definicjami TypeScript.

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

npm install @types/uuid

Gdy zaznajomisz się z TypeScript, możesz połączyć obie instalacje:

npm install uuid @types/uuid

Zależności typu powinny być tego samego rodzaju, co zależność biblioteczna. Na przykład nie należy zapisywać uuid jako normalnej zależności i @types/uuid jako zależności dev 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 również użyć funkcji require() , aby zaimportować lokalne pliki, 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 modułów prywatnych

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 dane logowania Artifact Registry dla konta usługi Cloud Build . Wystarczy wyświetlić repozytorium Artifact Registry w .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

Moduły prywatne z innych repozytoriów

Dokumentacja npm wyjaśnia, jak tworzyć niestandardowe tokeny dostępu tylko do odczytu. Odradzamy korzystanie z 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 bezpieczeństwa.

Nie dołączaj pliku .npmrc , jeśli nie używasz 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 tokena uwierzytelniania, powinien on zawierać wiersz pokazany poniżej. Zastąp <YOUR_AUTH_TOKEN> tokenem uwierzytelniania dostarczonym przez NPM.

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