Check out what’s new from Firebase at Google I/O 2022. Learn more

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

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 APIs เช่น 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
  • ตัวจำลองการตรวจสอบสิทธิ์
  • โปรแกรมจำลองผับ/ย่อย

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

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

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

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

Firebase Hosting

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

การบันทึก

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

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

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