טיפול בתלות

לפונקציה מותר להשתמש במודולי Node.js חיצוניים כמו גם בנתונים מקומיים. התלות ב-Node.js מנוהלות עם npm ומבוטאות בקובץ מטא נתונים בשם package.json . זמני הריצה של Cloud Functions Node.js תומכים בדרך כלל בהתקנה באמצעות npm או yarn .

כדי לציין תלות עבור הפונקציה שלך, הוסף אותה לקובץ 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')}!`);
});

TypeScript

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: prefix . בדוגמה הבאה, mymodule מתייחס לשם המודול שלך ו- mymoduledir הוא הספרייה המכילה את המודול שלך:

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

הקוד עבור מודול מקומי זה צריך להיות מאוחסן במקום אחר מאשר תיקיית node_modules בספריית השורש של הפונקציה שלך.

שלבים נוספים עבור TypeScript

TypeScript עוזר לך ביותר כאשר אתה משתמש בספריות שיש בהן מידע על סוג. זה מאפשר ל-TypeScript לתפוס שגיאות תחביר ומאפשר לעורכים לתת לך הצעות השלמה אוטומטית טובות יותר. ספריות מסוימות, כמו firebase-admin ו- firebase-functions , נכללות בהגדרות TypeScript.

ספריות רבות אינן מספקות הגדרת TypeScript משלהן. הפרויקט DefinitelyTyped מספק הגדרות קהילתיות עבור ספריות הצמתים הפופולריות ביותר. DefinitelyTyped מפרסם את ההגדרות הללו תחת אותו שם חבילת NPM, אך בתוך ארגון "@types". לדוגמה, אתה יכול להתקין את פרטי הסוג עבור ספריית uuid עם הדברים הבאים:

npm install @types/uuid

ככל שתתחיל להכיר את TypeScript, אתה עלול למצוא את עצמך משלב את שתי ההתקנות:

npm install uuid @types/uuid

תלות סוג צריכה להיות זהה לתלות בספרייה. לדוגמה, אין לשמור את uuid כתלות רגילה ואת @types/uuid כתלות ב-dev או עמיתים.

טוען מודולי Node.js

השתמש בפונקציה Node.js require() כדי לטעון כל מודול Node.js שהתקנת. אתה יכול גם להשתמש בפונקציה require() כדי לייבא קבצים מקומיים שאתה פורס לצד הפונקציה שלך.

אם אתה כותב פונקציות ב-TypeScript, השתמש במשפט import באותו אופן כדי לטעון כל מודול Node.js שהתקנת.

שימוש במודולים פרטיים

אתה יכול להשתמש במודול npm פרטי על ידי מתן הגדרות לאימות עם הרישום בקובץ .npmrc הפונקציה.

מודולים פרטיים מ-Artifact Registry

מאגר חבילות Artifact Registry Node.js יכול לארח מודולים פרטיים עבור הפונקציה שלך. בעת הפריסה ל-Cloud Functions, תהליך הבנייה יפיק באופן אוטומטי אישורים של Artifact Registry עבור חשבון השירות Cloud Build . אתה רק צריך לרשום את מאגר ה-Artifact Registry ב-. .npmrc שלך מבלי ליצור אישורים נוספים. לדוגמה:

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

מודולים פרטיים ממאגרים אחרים

תיעוד npm מסביר כיצד ליצור אסימוני גישה לקריאה בלבד מותאמים אישית. אנו ממליצים להשתמש בקובץ .npmrc שנוצר בספריית הבית מכיוון שהוא מכיל אסימון קריאה-כתיבה. הרשאות כתיבה אינן נדרשות במהלך הפריסה, ועלולות להוות סיכון אבטחה.

אל תכלול את קובץ .npmrc אם אינך משתמש במאגרים פרטיים, מכיוון שהוא יכול להאריך את זמן הפריסה של הפונקציות שלך.

פורמט קובץ

אם אתה משתמש בקובץ .npmrc כדי להגדיר אסימון אימות מותאם אישית, הוא צריך לכלול את השורה המוצגת למטה. החלף <YOUR_AUTH_TOKEN> באסימון האימות שסופק על ידי NPM.

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