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

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

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

  • ฟังก์ชัน HTTPS
  • ฟังก์ชันที่เรียกได้
  • ฟังก์ชันพื้นหลังที่ทริกเกอร์จากการตรวจสอบสิทธิ์ ฐานข้อมูลเรียลไทม์ Cloud Firestore และ 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 APIs หรือ APIs Firebase อื่น ๆ ผ่านทาง Firebase SDK ผู้ดูแลระบบ คุณอาจจำเป็นต้องตั้งค่าข้อมูลประจำตัวของผู้ดูแลระบบ

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

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

  1. เปิด บานหน้าต่างด้านบริการบัญชี ของคอนโซล Google Cloud
  2. ตรวจสอบให้แน่ใจว่า App Engine บัญชีบริการเริ่มต้นมีการเลือกและใช้ตัวเลือกเมนูที่ด้านขวาเพื่อเลือกสร้างที่สำคัญ
  3. เมื่อได้รับแจ้งให้เลือก JSON สำหรับประเภทคีย์และคลิกสร้าง
  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 APIs ใช้ SDK ผู้ดูแลระบบ ตัวอย่างเช่นเมื่อทดสอบทริกเกอร์การตรวจสอบฟังก์ชั่นเทิดทูนสามารถโทร admin.auth().getUserByEmail(email)

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

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

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

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

เมื่อต้องการเรียกใช้ฟังก์ชั่นคลาวด์จำลองใช้ emulators:start คำสั่ง:

firebase emulators:start

emulators:start คำสั่งจะเริ่มเลียนแบบสำหรับฟังก์ชั่นเมฆเมฆ FireStore เรียลไทม์ฐานข้อมูลและ Firebase Hosting ขึ้นอยู่กับผลิตภัณฑ์ที่คุณได้เริ่มต้นได้ในโครงการท้องถิ่นของคุณโดยใช้ firebase init ถ้าคุณต้องการที่จะเริ่มต้นการจำลองโดยเฉพาะอย่างยิ่งใช้ --only ธง:

firebase emulators:start --only functions

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

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

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

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

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

ถ้าต้นแบบและการทดสอบกิจกรรมของคุณเกี่ยวข้องกับ ฟังก์ชั่นแบ็กเอนด์ callable ปฏิสัมพันธ์กำหนดค่ากับฟังก์ชั่นคลาวด์สำหรับการจำลอง 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);
iOS - Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

เว็บรุ่น 9

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

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

เว็บรุ่น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

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

Firebase Hosting

หากคุณกำลังใช้ฟังก์ชั่นคลาวด์เพื่อ สร้างเนื้อหาแบบไดนามิกสำหรับ Firebase Hosting , firebase emulators:start ใช้ฟังก์ชั่น HTTP ท้องถิ่นของคุณเป็นผู้รับมอบฉันทะสำหรับการเป็นเจ้าภาพ

การบันทึก

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

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

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