คุณสามารถติดตั้งและกำหนดค่าชุดโปรแกรมจำลองภายในของ Firebase สำหรับ สร้างต้นแบบและสภาพแวดล้อมการทดสอบอะไรก็ได้ ตั้งแต่เซสชันการสร้างต้นแบบแบบครั้งเดียวไปจนถึง เวิร์กโฟลว์การผสานรวมอย่างต่อเนื่องเพื่อปรับขนาดการผลิต
ติดตั้งชุดโปรแกรมจำลองภายใน
ก่อนติดตั้งชุดโปรแกรมจำลอง คุณจะต้องมีสิ่งต่อไปนี้
วิธีติดตั้งชุดโปรแกรมจำลอง
- ติดตั้ง Firebase CLI
หากคุณยังไม่ได้ติดตั้ง Firebase CLI
ติดตั้งทันที
คุณต้องใช้ CLI เวอร์ชัน 8.14.0 ขึ้นไปจึงจะใช้ชุดโปรแกรมจำลองได้ คุณสามารถ
ตรวจสอบว่าคุณติดตั้งเวอร์ชันใดโดยใช้คำสั่งต่อไปนี้
firebase --version
- เริ่มต้นไดเรกทอรีการทำงานปัจจุบัน หากยังไม่ได้ดำเนินการ
เป็นโปรเจ็กต์ Firebase โดยทำตามข้อความแจ้งบนหน้าจอเพื่อระบุ
ผลิตภัณฑ์ที่ใช้ได้:
firebase init
- ตั้งค่าชุดโปรแกรมจำลอง คำสั่งนี้จะเริ่มต้นวิซาร์ดการกำหนดค่าที่
ให้คุณเลือกโปรแกรมจำลองที่สนใจ ดาวน์โหลดโปรแกรมจำลองที่เกี่ยวข้อง
ไฟล์ไบนารี และตั้งค่าพอร์ตโปรแกรมจำลองหากค่าเริ่มต้นไม่เหมาะสม
firebase init emulators
เมื่อติดตั้งโปรแกรมจำลองแล้ว จะไม่มีการตรวจสอบการอัปเดตและไม่ต้องดำเนินการเพิ่มเติม การดาวน์โหลดอัตโนมัติจะเกิดขึ้นจนกว่าคุณจะอัปเดตเวอร์ชัน Firebase CLI
กำหนดค่าชุดโปรแกรมจำลอง
คุณสามารถเลือกกำหนดค่าโปรแกรมจำลอง พอร์ตเครือข่ายและเส้นทางสู่การรักษาความปลอดภัย
คำจำกัดความของกฎในไฟล์ firebase.json
:
- เปลี่ยนพอร์ตโปรแกรมจำลองโดยเรียกใช้
firebase init emulators
หรือด้วยการแก้ไขfirebase.json
ด้วยตนเอง - เปลี่ยนเส้นทางไปยังคำจำกัดความของกฎความปลอดภัยโดยแก้ไข
firebase.json
ด้วยตนเอง
ถ้าคุณไม่กำหนดการตั้งค่าเหล่านี้ โปรแกรมจำลองจะฟัง พอร์ตเริ่มต้น รวมถึงCloud Firestore, Realtime Database และCloud Storage for Firebase โปรแกรมจำลองจะทำงานด้วยความปลอดภัยข้อมูลแบบเปิด
คำสั่ง | คำอธิบาย |
---|---|
โปรแกรมจำลอง init | เริ่มวิซาร์ดการเริ่มต้นโปรแกรมจำลอง ระบุโปรแกรมจำลองที่จะติดตั้ง และเลือกระบุการตั้งค่าพอร์ตโปรแกรมจำลอง init emulators ไม่ทำลายข้อมูล การยอมรับค่าเริ่มต้นจะเก็บรักษาการกำหนดค่าโปรแกรมจำลองปัจจุบัน |
การกำหนดค่าพอร์ต
โปรแกรมจำลองแต่ละรายการจะผูกกับพอร์ตอื่นในเครื่องของคุณด้วยค่าเริ่มต้นที่ต้องการ
โปรแกรมจำลอง | พอร์ตเริ่มต้น |
---|---|
Authentication | 9099 |
Emulator Suite UI | 4000 |
Cloud Functions | 5001 |
Eventarc | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Cloud Storage for Firebase | 9199 |
Firebase Hosting | 5000 |
Pub/Sub | 8085 |
การกำหนดค่ารหัสโปรเจ็กต์
คุณอาจเรียกใช้ตัวจำลองหลายๆ อินสแตนซ์ โดยขึ้นอยู่กับวิธีเรียกใช้โปรแกรมจำลอง โปรแกรมจำลองที่ใช้รหัสโปรเจ็กต์ Firebase ที่แตกต่างกันหรืออินสแตนซ์โปรแกรมจำลองหลายรายการ สำหรับรหัสโปรเจ็กต์ที่กำหนด ในกรณีเช่นนี้ อินสแตนซ์โปรแกรมจำลองกำลังทำงานใน แยกกัน
เราขอแนะนำให้ตั้งค่ารหัสโปรเจ็กต์เพียงรหัสเดียวสำหรับโปรแกรมจำลองทั้งหมด ดังนั้น Emulator Suite UI รวมถึงโปรแกรมจำลองผลิตภัณฑ์แบบต่างๆ โปรแกรมจำลองบางอย่างที่ทำงานอยู่สามารถสื่อสารได้อย่างถูกต้องในทุก กรณี
Local Emulator Suite ออกคำเตือนเมื่อตรวจพบรหัสโปรเจ็กต์หลายรายการใน
สภาพแวดล้อมดังกล่าว คุณสามารถลบล้างลักษณะการทำงานนี้ได้โดยตั้งค่า
คีย์ singleProjectMode
ไปยัง false
ใน firebase.json
คุณตรวจสอบการประกาศรหัสโปรเจ็กต์เพื่อหาข้อมูลที่ไม่ตรงกันได้ในพื้นที่ต่อไปนี้
- โปรเจ็กต์เริ่มต้นในบรรทัดคำสั่ง โดยค่าเริ่มต้น รหัสโปรเจ็กต์จะ
จะมีผลเมื่อเริ่มต้นใช้งานจากโปรเจ็กต์ที่เลือกด้วย
firebase init
หรือfirebase use
วิธีดูรายการโปรเจ็กต์ (และดูว่าเลือกโปรเจ็กต์ใดไว้) ใช้firebase projects:list
- การทดสอบหน่วยของกฎ รหัสโปรเจ็กต์มักจะระบุในการเรียกกฎ
เมธอดไลบรารีของหน่วยการทดสอบ
initializeTestEnvironment
หรือinitializeTestApp
- แฟล็กบรรทัดคำสั่ง
--project
ผ่าน Firebase CLI แฟล็ก--project
จะลบล้างโปรเจ็กต์เริ่มต้น คุณจะต้องตรวจสอบว่าค่า ของแฟล็กตรงกับรหัสโปรเจ็กต์ในการทดสอบหน่วยและการเริ่มต้นแอป
นอกจากนี้ ให้ตรวจสอบการกำหนดค่ารหัสโปรเจ็กต์เฉพาะแพลตฟอร์มที่คุณได้ตั้งค่าไว้ การกำหนดค่าแพลตฟอร์ม Apple โปรเจ็กต์ Android และเว็บ
การกำหนดค่ากฎความปลอดภัย
โปรแกรมจำลองจะใช้การกำหนดค่ากฎการรักษาความปลอดภัยจาก database
คีย์การกำหนดค่า firestore
และ storage
ใน firebase.json
{
// Existing firebase configuration ...
"database": {
"rules": "database.rules.json"
},
"firestore": {
"rules": "firestore.rules"
},
"storage": {
"rules": "storage.rules"
}
// ...
// Optional emulator configuration. Default
// values are used if absent.
"emulators": {
"singleProjectMode": false, // do not warn on detection of multiple project IDs
"firestore": {
"port": "8080"
},
"ui": {
"enabled": true, // Default is `true`
"port": 4000 // If unspecified, see CLI log for selected port
},
"auth": {
"port": "9099"
},
"pubsub": {
"port": "8085"
}
}
}
การระบุตัวเลือก Java
โปรแกรมจำลอง Realtime Database โปรแกรมจำลอง Cloud Firestore และส่วนหนึ่งของ
โปรแกรมจำลอง Cloud Storage for Firebase ใช้ Java ซึ่งปรับแต่งได้
ด้วยแฟล็ก JVM ผ่านตัวแปรสภาพแวดล้อม JAVA_TOOL_OPTIONS
ตัวอย่างเช่น ถ้าคุณพบข้อผิดพลาดเกี่ยวกับพื้นที่ฮีปของ Java คุณสามารถเพิ่ม ขนาดฮีป Java สูงสุดคือ 4 GB
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
คุณสามารถระบุแฟล็กได้หลายรายการในเครื่องหมายคำพูดโดยคั่นด้วยการเว้นวรรค เช่น
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
การตั้งค่าสถานะจะมีผลกับการตั้งค่าแบบ Java เท่านั้น
ของโปรแกรมจำลอง และไม่มีผลต่อส่วนอื่นๆ ของ
Firebase CLI เช่น Emulator Suite UI
โปรแกรมจำลองเริ่มต้น
คุณสามารถเริ่มโปรแกรมจำลองให้เรียกใช้จนกว่าจะสิ้นสุดด้วยตนเอง หรือให้เรียกใช้สำหรับ ของสคริปต์ทดสอบที่กำหนดและหยุดทำงานโดยอัตโนมัติ
คำสั่ง | คำอธิบาย | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
โปรแกรมจำลอง:start | เริ่มใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ Firebase ที่กำหนดค่าใน firebase.json
กระบวนการจำลองจะทำงานต่อไปจนกว่าจะหยุดทำงานอย่างชัดเจน การโทร
emulators:start จะดาวน์โหลดโปรแกรมจำลองไปยัง ~/.cache/firebase/emulators/ หาก
ยังไม่ได้ติดตั้ง
|
||||||||||||
โปรแกรมจำลอง:exec scriptpath | เรียกใช้สคริปต์ที่ scriptpath หลังจากเริ่มใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ Firebase
กำหนดค่าใน firebase.json แล้ว กระบวนการจำลองจะหยุดโดยอัตโนมัติ
สคริปต์ทำงานเสร็จแล้ว
|
โดยทั่วไปเมธอด firebase emulators:exec
จะเหมาะกับ
เวิร์กโฟลว์การผสานรวมอย่างต่อเนื่อง
ส่งออกและนำเข้าข้อมูลโปรแกรมจำลอง
คุณสามารถส่งออกข้อมูลจาก Authentication, Cloud Firestore, Realtime Database และ
โปรแกรมจำลอง Cloud Storage for Firebase เพื่อใช้เป็นข้อมูลพื้นฐานทั่วไปที่แชร์ได้
ตั้งค่า คุณนำเข้าชุดข้อมูลเหล่านี้ได้โดยใช้แฟล็ก --import
ในฐานะ
ที่อธิบายไว้ข้างต้น
โปรแกรมจำลอง:ส่งออก export_directory |
โปรแกรมจำลอง Authentication, Cloud Firestore, Realtime Database หรือ Cloud Storage for Firebase
ส่งออกข้อมูลจาก Cloud Firestore, Realtime Database หรือ Cloud Storage for Firebase ที่ทำงานอยู่
และอินสแตนซ์โปรแกรมจำลอง ระบบจะสร้าง
คุณสามารถสั่งให้โปรแกรมจำลองส่งออกข้อมูลโดยอัตโนมัติเมื่อปิดโปรแกรมโดยใช้
แฟล็ก |
ผสานรวมกับระบบ CI
การเรียกใช้อิมเมจชุดโปรแกรมจำลองคอนเทนเนอร์
การติดตั้งและการกำหนดค่าชุดโปรแกรมจำลองพร้อมด้วยคอนเทนเนอร์ในไฟล์ การตั้งค่า CI ทั่วไปนั้นตรงไปตรงมา
ปัญหาบางอย่างที่ควรทราบมีดังนี้
ระบบจะติดตั้งและแคชไฟล์ JAR ไว้ที่
~/.cache/firebase/emulators/
- คุณอาจต้องเพิ่มเส้นทางนี้ลงในการกำหนดค่าแคช CI เพื่อหลีกเลี่ยง มีการดาวน์โหลดซ้ำ
หากไม่มีไฟล์
firebase.json
ในที่เก็บ คุณต้องเพิ่ม อาร์กิวเมนต์บรรทัดคำสั่งemulators:start
หรือemulators:exec
เพื่อระบุว่าโปรแกรมจำลองใดควรเริ่มต้น ตัวอย่างเช่น--only functions,firestore
สร้างโทเค็นการตรวจสอบสิทธิ์ (โปรแกรมจำลองโฮสติ้งเท่านั้น)
หากเวิร์กโฟลว์การผสานรวมอย่างต่อเนื่องของคุณใช้ Firebase Hosting คุณก็
จะต้องเข้าสู่ระบบโดยใช้โทเค็นเพื่อเรียกใช้ firebase emulators:exec
โปรแกรมจำลองอื่นๆ ไม่จำเป็นต้องเข้าสู่ระบบ
หากต้องการสร้างโทเค็น ให้เรียกใช้ firebase login:ci
ในสภาพแวดล้อมในเครื่องของคุณ ซึ่งไม่ควรดำเนินการจากระบบ CI ทำตามวิธีการเพื่อตรวจสอบสิทธิ์ คุณควรทำขั้นตอนนี้เพียงครั้งเดียวต่อโปรเจ็กต์เท่านั้น เนื่องจากโทเค็นจะใช้ได้ในทุกบิลด์ โทเค็นควรถือเป็นรหัสผ่าน อย่าลืมเก็บเป็นความลับ
หากสภาพแวดล้อม CI อนุญาตให้คุณระบุตัวแปรสภาพแวดล้อมที่สามารถ
ที่ใช้ในสคริปต์บิลด์ เพียงแค่สร้างตัวแปรสภาพแวดล้อมที่เรียกว่า
FIREBASE_TOKEN
โดยค่าเป็นสตริงโทเค็นเพื่อการเข้าถึง Firebase CLI
จะเลือกตัวแปรสภาพแวดล้อม FIREBASE_TOKEN
โดยอัตโนมัติและ
โปรแกรมจำลองจะเริ่มทำงานอย่างถูกต้อง
ในกรณีสุดท้าย คุณสามารถรวมโทเค็นไว้ในสคริปต์บิลด์
ตรวจสอบว่าบุคคลที่ไม่น่าเชื่อถือไม่มีสิทธิ์เข้าถึง สำหรับฮาร์ดโค้ดนี้
คุณสามารถเพิ่ม --token "YOUR_TOKEN_STRING_HERE"
ลงใน
คำสั่ง firebase emulators:exec
ใช้ Emulator Hub REST API
แสดงรายการโปรแกรมจำลองที่ทำงานอยู่
หากต้องการแสดงรายการโปรแกรมจำลองที่ทำงานอยู่ ให้ส่งคำขอ GET
ไปยัง /emulators
ปลายทางของฮับโปรแกรมจำลอง
curl localhost:4400/emulators
ผลลัพธ์ที่ได้จะเป็นออบเจ็กต์ JSON ที่มีโปรแกรมจำลองที่ทำงานอยู่ทั้งหมดและ การกำหนดค่าโฮสต์/พอร์ต เช่น
{
"hub":{
"name": "hub",
"host": "localhost",
"port": 4400
},
"functions": {
"name": "functions",
"host": "localhost",
"port": 5001
}
"firestore": {
"name": "firestore",
"host": "localhost",
"port": 8080
}
}
เปิดใช้ / ปิดใช้ทริกเกอร์ฟังก์ชันพื้นหลัง
ในบางสถานการณ์ คุณจะต้องปิดใช้ฟังก์ชันภายในตัวเครื่องชั่วคราวและ
ทริกเกอร์ของส่วนขยาย เช่น คุณอาจต้องการลบข้อมูลทั้งหมดในส่วน
โปรแกรมจำลอง Cloud Firestore โดยไม่ทริกเกอร์ฟังก์ชัน onDelete
ที่
ทำงานอยู่ในโปรแกรมจำลอง Cloud Functions หรือ Extensions
หากต้องการปิดใช้ทริกเกอร์ฟังก์ชันในเครื่องชั่วคราว ให้ส่งคำขอ PUT
ไปยัง
ปลายทางของ /functions/disableBackgroundTriggers
ของฮับโปรแกรมจำลอง
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
ผลลัพธ์ที่ได้จะเป็นออบเจ็กต์ JSON ที่แสดงรายละเอียดสถานะปัจจุบัน
{
"enabled": false
}
หากต้องการเปิดใช้ทริกเกอร์ฟังก์ชันภายในหลังจากปิดใช้แล้ว ให้ส่ง PUT
คำขอไปยังปลายทาง /functions/enableBackgroundTriggers
ของโปรแกรมจำลอง
Hub
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
ผลลัพธ์ที่ได้จะเป็นออบเจ็กต์ JSON ที่แสดงรายละเอียดสถานะปัจจุบัน
{
"enabled": true
}
การผสานรวม SDK โปรแกรมจำลอง
ตารางในส่วนนี้จะระบุว่าไคลเอ็นต์รองรับโปรแกรมจำลองใดบ้าง และ Admin SDK ในอนาคตหมายความว่ามีการวางแผนรองรับโปรแกรมจำลองแล้ว พร้อมใช้งาน
ความพร้อมใช้งานของ SDK ของไคลเอ็นต์
Android | แพลตฟอร์มของ Apple | เว็บ |
Firebase UI Android |
Firebase UI iOS |
เว็บไซต์ UI ของ Firebase |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | อนาคต | ไม่มี |
Cloud Firestore | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | อนาคต | ไม่มี |
Authentication | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | อนาคต | 4.7.2 |
Cloud Storage for Firebase | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | ไม่มี |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | ไม่มี | ไม่มี | ไม่มี |
Hosting | ไม่มี | ไม่มี | ไม่มี | ไม่มี | ไม่มี | ไม่มี |
Extensions | ไม่มี | ไม่มี | ไม่มี | ไม่มี | ไม่มี | ไม่มี |
ความพร้อมใช้งานของ Admin SDK
โหนด | Java | Python | Go | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | อนาคต |
Cloud Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
Authentication | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Cloud Storage for Firebase | 9.8.0 | อนาคต | อนาคต | อนาคต |
Cloud Functions | ไม่มี | ไม่มี | ไม่มี | ไม่มี |
Hosting | ไม่มี | ไม่มี | ไม่มี | ไม่มี |
Extensions | ไม่มี | ไม่มี | ไม่มี | ไม่มี |