Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

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

ไลบรารีจำนวนมากไม่ได้ให้คำจำกัดความของ TypeScript ของตนเอง DefinitelyTyped โครงการให้คำจำกัดความของชุมชนเพื่อรักษาความนิยมมากที่สุดห้องสมุดโหนด SureTyped เผยแพร่คำจำกัดความเหล่านี้ภายใต้ชื่อแพ็คเกจ 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 ส่วนตัว คุณจะต้องให้ข้อมูลประจำตัว (รับรองความถูกต้องโทเค็น) สำหรับสตรี NPM ใน .npmrc ไฟล์อยู่ในไดเรกทอรีของฟังก์ชัน เอกสาร NPM อธิบายถึงวิธีการสร้างโทเค็นการเข้าถึงที่กำหนดเองอ่านอย่างเดียว เราไม่ใช้ .npmrc ไฟล์ที่สร้างในไดเรกทอรีบ้านเพราะมันมีโทเค็นอ่านเขียน ไม่จำเป็นต้องมีสิทธิ์เขียนในระหว่างการปรับใช้ และอาจก่อให้เกิดความเสี่ยงด้านความปลอดภัย

อย่ารวม .npmrc ไฟล์ถ้าคุณไม่ได้ใช้เก็บส่วนตัวเท่าที่จะสามารถเพิ่มเวลาการใช้งานสำหรับการทำงานของคุณ

รูปแบบไฟล์

หากคุณกำลังใช้ .npmrc ไฟล์การตั้งค่าที่กำหนดเองรับรองความถูกต้องโทเค็นก็ควรจะรวมถึงบรรทัดที่แสดงด้านล่าง แทนที่ <YOUR_AUTH_TOKEN> กับการตรวจสอบสัญญาณ NPM ที่ให้คุณ

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