Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

เรียกใช้ฟังก์ชันในเครื่อง

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

Firebase CLI มีโปรแกรมจำลอง Cloud Functions ซึ่งสามารถจำลองประเภทฟังก์ชันต่อไปนี้ได้:

  • ฟังก์ชัน HTTPS
  • ฟังก์ชันที่เรียกได้
  • ฟังก์ชันพื้นหลังที่เรียกใช้จากการตรวจสอบสิทธิ์ Firebase, ฐานข้อมูลเรียลไทม์, Cloud Firestore, Cloud Storage และ Cloud Pub/Sub

คุณสามารถเรียกใช้ฟังก์ชันในเครื่องเพื่อทดสอบได้ก่อนที่จะปรับใช้กับการใช้งานจริง

ติดตั้ง Firebase CLI

หากต้องการใช้โปรแกรมจำลอง Cloud Functions ก่อนอื่นให้ติดตั้ง Firebase CLI:

npm install -g firebase-tools

ในการใช้โปรแกรมจำลองในเครื่อง Cloud Functions ของคุณต้องขึ้นอยู่กับ:

  • firebase-admin เวอร์ชัน 8.0.0 ขึ้นไป
  • firebase-functions เวอร์ชัน 3.0.0 หรือสูงกว่า

ตั้งค่าข้อมูลประจำตัวของผู้ดูแลระบบ (ไม่บังคับ)

หากคุณต้องการให้การทดสอบฟังก์ชันโต้ตอบกับ Google API หรือ Firebase API อื่นๆ ผ่าน Firebase Admin SDK คุณอาจต้องตั้งค่าข้อมูลรับรองผู้ดูแลระบบ

  • ทริกเกอร์ Cloud Firestore และ Realtime Database มีข้อมูลรับรองเพียงพออยู่แล้ว และ ไม่ ต้องการการตั้งค่าเพิ่มเติม
  • API อื่นๆ ทั้งหมด รวมถึง Firebase API เช่น Authentication และ FCM หรือ Google API เช่น Cloud Translation หรือ Cloud Speech ต้องมีขั้นตอนการตั้งค่าที่อธิบายไว้ในส่วนนี้ สิ่งนี้ใช้ได้ไม่ว่าคุณจะใช้เชลล์ Cloud Functions หรือ firebase emulators:start

ในการตั้งค่าข้อมูลประจำตัวของผู้ดูแลระบบสำหรับฟังก์ชันที่จำลอง:

  1. เปิด บานหน้าต่างบัญชีบริการ ของ Google Cloud Console
  2. ตรวจสอบให้แน่ใจว่าได้เลือก บัญชีบริการเริ่มต้นของ App Engine แล้ว และใช้เมนูตัวเลือกที่ด้านขวาเพื่อเลือก สร้างคีย์
  3. เมื่อได้รับแจ้ง ให้เลือก JSON สำหรับประเภทคีย์ แล้วคลิก Create
  4. ตั้งค่าข้อมูลรับรองเริ่มต้นของ Google ให้ชี้ไปที่คีย์ที่ดาวน์โหลด:

    Unix

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    firebase emulators:start
    

    Windows

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

หลังจากทำตามขั้นตอนเหล่านี้เสร็จแล้ว การทดสอบฟังก์ชันจะเข้าถึง Firebase และ Google API ได้โดยใช้ Admin SDK ตัวอย่างเช่น เมื่อทำการทดสอบทริกเกอร์การตรวจสอบสิทธิ์ ฟังก์ชันจำลองอาจเรียก admin.auth().getUserByEmail(email)

ตั้งค่าการกำหนดค่าฟังก์ชัน (ไม่บังคับ)

หากคุณกำลังใช้ตัวแปรการกำหนดค่าฟังก์ชันแบบกำหนดเอง ให้รันคำสั่งก่อนเพื่อรับการกำหนดค่าแบบกำหนดเองของคุณ (เรียกใช้สิ่งนี้ภายในไดเร็กทอรี functions ) ในสภาพแวดล้อมภายในของคุณ:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

เรียกใช้ชุดโปรแกรมจำลอง

ในการรันโปรแกรมจำลอง Cloud Functions ให้ใช้คำสั่ง emulators:start :

firebase emulators:start

คำสั่ง emulators:start จะเริ่มต้นอีมูเลเตอร์สำหรับ Cloud Functions, Cloud Firestore, Realtime Database และ Firebase Hosting ตามผลิตภัณฑ์ที่คุณได้เริ่มต้นในโครงการในพื้นที่ของคุณโดยใช้ firebase init หากคุณต้องการเริ่มโปรแกรมจำลองเฉพาะ ให้ใช้แฟล็ก --only :

firebase emulators:start --only functions

หากคุณต้องการรันชุดทดสอบหรือสคริปต์ทดสอบหลังจากอีมูเลเตอร์เริ่มทำงาน ให้ใช้คำสั่ง emulators:exec :

firebase emulators:exec "./my-test.sh"

เครื่องมือแอปของคุณเพื่อพูดคุยกับอีมูเลเตอร์

หากต้องการให้แอปของคุณโต้ตอบกับอีมูเลเตอร์ คุณอาจต้องกำหนดค่าเพิ่มเติมบางอย่าง

เครื่องมือแอปของคุณสำหรับฟังก์ชันที่เรียกได้

หากกิจกรรมต้นแบบและการทดสอบของคุณเกี่ยวข้องกับ ฟังก์ชันแบ็กเอนด์ ที่เรียกได้ ให้กำหนดค่าการโต้ตอบกับโปรแกรมจำลอง Cloud Functions for Firebase ดังนี้:

Android
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFunctions functions = FirebaseFunctions.getInstance();
functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

firebase.functions().useEmulator("localhost", 5001);

เครื่องมือแอปของคุณสำหรับการจำลองฟังก์ชัน HTTPS

ฟังก์ชัน HTTPS แต่ละรายการในโค้ดของคุณจะให้บริการจากโปรแกรมจำลองในเครื่องโดยใช้รูปแบบ URL ต่อไปนี้:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

ตัวอย่างเช่น ฟังก์ชัน helloWorld อย่างง่ายที่มีพอร์ตโฮสต์เริ่มต้นและภูมิภาคจะให้บริการที่:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

ปรับแต่งแอปของคุณสำหรับการจำลองฟังก์ชันการทำงานเบื้องหลัง

โปรแกรมจำลอง Cloud Functions รองรับฟังก์ชันที่ทริกเกอร์พื้นหลังจากแหล่งที่มาต่อไปนี้:

  • โปรแกรมจำลองฐานข้อมูลเรียลไทม์
  • โปรแกรมจำลอง Cloud Firestore
  • ตัวจำลองการตรวจสอบสิทธิ์
  • โปรแกรมจำลองผับ/ย่อย

หากต้องการทริกเกอร์เหตุการณ์เบื้องหลัง ให้แก้ไขทรัพยากรส่วนหลังโดยใช้ Emulator Suite UI หรือโดยการเชื่อมต่อแอปหรือโค้ดทดสอบกับโปรแกรมจำลองโดยใช้ SDK สำหรับแพลตฟอร์มของคุณ

ตัวจัดการทดสอบสำหรับเหตุการณ์ที่กำหนดเองที่ปล่อยออกมาโดย Extensions

สำหรับฟังก์ชันที่คุณใช้เพื่อจัดการเหตุการณ์ที่กำหนดเองของ Firebase Extensions ด้วย Cloud Function v2 โปรแกรมจำลอง Cloud Functions จะจับคู่กับโปรแกรมจำลอง Eventarc เพื่อรองรับ ทริกเกอร์ Eventarc

หากต้องการทดสอบตัวจัดการเหตุการณ์ที่กำหนดเองสำหรับส่วนขยายที่ปล่อยเหตุการณ์ คุณต้องติดตั้ง Cloud Functions และอีมูเลเตอร์ Eventarc

รันไทม์ของ Cloud Functions จะตั้งค่าตัวแปรสภาพแวดล้อม EVENTARC_EMULATOR เป็น localhost:9299 ในกระบวนการปัจจุบันหากตัวจำลอง Eventarc กำลังทำงานอยู่ Firebase Admin SDK จะเชื่อมต่อกับโปรแกรมจำลอง Eventarc โดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม EVENTARC_EMULATOR คุณสามารถแก้ไขพอร์ตเริ่มต้นตามที่กล่าวถึง ใน Configure Local Emulator Suite

เมื่อกำหนดค่าตัวแปรสภาพแวดล้อมอย่างเหมาะสมแล้ว Firebase Admin SDK จะส่งเหตุการณ์ไปยังโปรแกรมจำลอง Eventarc โดยอัตโนมัติ ในทางกลับกัน อีมูเลเตอร์ Eventarc จะทำการเรียกกลับไปยังโปรแกรมจำลอง Cloud Functions เพื่อทริกเกอร์เครื่องจัดการที่ลงทะเบียน

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

การโต้ตอบกับบริการอื่น ๆ

ชุดโปรแกรมจำลองประกอบด้วยโปรแกรมจำลองหลายตัว ซึ่งช่วยให้ทดสอบการโต้ตอบข้ามผลิตภัณฑ์ได้

Cloud Firestore

หากคุณมีฟังก์ชันที่ใช้ Firebase Admin SDK เพื่อเขียนไปยัง Cloud Firestore การเขียนเหล่านี้จะถูกส่งไปยังโปรแกรมจำลอง Cloud Firestore หากทำงานอยู่ หากฟังก์ชันเพิ่มเติมถูกทริกเกอร์โดยการเขียนเหล่านั้น ฟังก์ชันเหล่านั้นจะถูกเรียกใช้ในโปรแกรมจำลอง Cloud Functions

การจัดเก็บเมฆ

หากคุณมีฟังก์ชันที่ใช้ Firebase Admin SDK (เวอร์ชัน 9.7.0 ขึ้นไป) เพื่อเขียนไปยัง Cloud Storage การเขียนเหล่านี้จะถูกส่งไปยังโปรแกรมจำลอง Cloud Storage หากทำงานอยู่ หากฟังก์ชันเพิ่มเติมถูกทริกเกอร์โดยการเขียนเหล่านั้น ฟังก์ชันเหล่านั้นจะถูกเรียกใช้ในโปรแกรมจำลอง Cloud Functions

การตรวจสอบสิทธิ์ Firebase

หากคุณมีฟังก์ชันที่ใช้ Firebase Admin SDK (เวอร์ชัน 9.3.0 ขึ้นไป) เพื่อเขียนไปยัง Firebase Authentication การเขียนเหล่านี้จะถูกส่งไปยังโปรแกรมจำลองการตรวจสอบสิทธิ์หากทำงานอยู่ หากฟังก์ชันเพิ่มเติมถูกทริกเกอร์โดยการเขียนเหล่านั้น ฟังก์ชันเหล่านั้นจะถูกเรียกใช้ในโปรแกรมจำลอง Cloud Functions

Firebase Hosting

หากคุณกำลังใช้ Cloud Functions เพื่อ สร้างเนื้อหาแบบไดนามิกสำหรับ Firebase Hosting firebase emulators:start จะใช้ฟังก์ชัน HTTP ในเครื่องของคุณเป็นพร็อกซีสำหรับการโฮสต์

การบันทึก

อีมูเลเตอร์สตรีมบันทึกจากฟังก์ชันของคุณไปยังหน้าต่างเทอร์มินัลที่ทำงาน มันแสดงผลลัพธ์ทั้งหมดจากคำสั่ง console.log() , console.info() , console.error() และ console.warn() ภายในฟังก์ชันของคุณ

ขั้นตอนถัดไป

สำหรับตัวอย่างเต็มรูปแบบของการใช้ชุดโปรแกรมจำลอง Firebase โปรดดูที่ ตัวอย่างการทดสอบการเริ่มต้นอย่างรวดเร็ว