获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

การจัดการการพึ่งพา

ฟังก์ชันได้รับอนุญาตให้ใช้โมดูล Node.js ภายนอก เช่นเดียวกับข้อมูลในเครื่อง การพึ่งพาใน Node.js ได้รับการจัดการด้วย npm และแสดงในไฟล์ข้อมูลเมตาชื่อ package.json โดยทั่วไปรันไทม์ของ Cloud Functions Node.js รองรับการติดตั้งโดยใช้ npm หรือ yarn

หากต้องการระบุการพึ่งพาสำหรับฟังก์ชันของคุณ ให้เพิ่มไปยังไฟล์ package.json

ในตัวอย่างนี้ การพึ่งพาจะแสดงอยู่ในไฟล์ package.json :

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

จากนั้นการพึ่งพาจะถูกนำเข้าในฟังก์ชัน:

จาวาสคริปต์

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: คำนำหน้า ในตัวอย่างต่อไปนี้ mymodule อ้างถึงชื่อโมดูลของคุณและ mymoduledir คือไดเร็กทอรีที่มีโมดูลของคุณ:

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

โค้ดสำหรับโลคัลโมดูลนี้ควรเก็บไว้ที่อื่นที่ไม่ใช่โฟลเดอร์ node_modules ภายในไดเร็กทอรีรากของฟังก์ชันของคุณ

ขั้นตอนเพิ่มเติมสำหรับ TypeScript

TypeScript ช่วยคุณได้มากที่สุดเมื่อคุณใช้ไลบรารีที่มีข้อมูลประเภท ซึ่งช่วยให้ TypeScript ตรวจจับข้อผิดพลาดทางไวยากรณ์และช่วยให้ผู้แก้ไขให้คำแนะนำการเติมข้อความอัตโนมัติได้ดียิ่งขึ้น ไลบรารีบางตัว เช่น firebase-admin และ firebase-functions มาพร้อมกับข้อกำหนด TypeScript รวมอยู่ด้วย

ไลบรารี่จำนวนมากไม่มีการกำหนด TypeScript ของตนเอง โครงการ AbsoluteTyped ให้คำจำกัดความที่ดูแลโดยชุมชนสำหรับไลบรารีโหนดยอดนิยม AbsoluteTyped เผยแพร่คำจำกัดความเหล่านี้ภายใต้ชื่อแพ็คเกจ NPM เดียวกัน แต่อยู่ในองค์กร "@types" ตัวอย่างเช่น คุณสามารถติดตั้งข้อมูลประเภทสำหรับไลบรารี uuid ด้วยสิ่งต่อไปนี้:

npm install @types/uuid

เมื่อคุณคุ้นเคยกับ TypeScript มากขึ้น คุณอาจพบว่าตัวเองใช้การติดตั้งทั้งสองแบบร่วมกัน:

npm install uuid @types/uuid

การขึ้นต่อกันของประเภทควรเป็นประเภทเดียวกับการขึ้นต่อกันของไลบรารี ตัวอย่างเช่น คุณไม่ควรบันทึก uuid เป็นการพึ่งพาปกติและ @types/uuid เป็นการพึ่งพา dev หรือการพึ่งพาเพียร์

กำลังโหลดโมดูล Node.js

ใช้ฟังก์ชัน Node.js required 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>