Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

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

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

  • ฟังก์ชัน HTTPS
  • ฟังก์ชันที่เรียกได้
  • ฟังก์ชันเบื้องหลังที่เรียกใช้จาก Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage และ Cloud Pub/Sub

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

ติดตั้ง Firebase CLI

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

npm install -g firebase-tools

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

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

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

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

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

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

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

    ยูนิกซ์

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

    หน้าต่าง

    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 ดังนี้:

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val functions = Firebase.functions
functions.useEmulator("10.0.2.2", 5001)
Java
// 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);
สวิฟต์
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
  • โปรแกรมจำลองการตรวจสอบสิทธิ์
  • โปรแกรมจำลอง Pub/Sub

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

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

สำหรับฟังก์ชันที่คุณใช้เพื่อจัดการกับเหตุการณ์ที่กำหนดเองของ Firebase Extensions ด้วย Cloud Functions 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 emulator หากกำลังทำงานอยู่ หากมีการทริกเกอร์ฟังก์ชันเพิ่มเติมโดยการเขียนเหล่านั้น ฟังก์ชันเหล่านั้นจะถูกเรียกใช้ในโปรแกรมจำลอง Cloud Functions

การรับรองความถูกต้องของ Firebase

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

โฮสติ้ง Firebase

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

การบันทึก

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

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

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