หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
วินิจฉัยปัญหาทั่วไปเมื่อคุณพัฒนาหรือปรับใช้โครงการ Fabric Apps บทความนี้กล่าวถึงปัญหาเกี่ยวกับการลงชื่อเข้าใช้ บริการภายในเครื่อง การเปลี่ยนแปลง Schema การโฮสต์แบบคงที่ และ CLI
ปัญหาการปรับใช้
การปรับใช้ล้มเหลวด้วยข้อผิดพลาด 401 หรือ 403
อาการ: การเรียกใช้ npx rayfin up จะส่งกลับข้อผิดพลาดในการรับรองความถูกต้อง
สาเหตุ: เซสชันการตรวจสอบสิทธิ์ของคุณหมดอายุหรือคุณไม่ได้ลงชื่อเข้าใช้
วิธีการแก้:
รับรองความถูกต้องอีกครั้งและลองปรับใช้อีกครั้ง:
npx rayfin login
npx rayfin up
การปรับใช้แบบคงที่เกินขีดจํากัดขนาด
อาการ: การปรับใช้เนื้อหาแบบคงที่ล้มเหลวโดยมีข้อผิดพลาดการจํากัดขนาด
สาเหตุ: ไฟล์เก็บถาวรที่บีบอัดเกิน 100 MB
วิธีการแก้:
ลดขนาดเอาต์พุตบิลด์โดย:
- การยกเว้นแผนที่ต้นทางจากบิลด์ที่ใช้งานจริง
- การเพิ่มประสิทธิภาพหรือการลบรูปภาพและวิดีโอขนาดใหญ่
- การย้ายไฟล์ไบนารีไปยังที่เก็บข้อมูลแทนการรวมกลุ่ม
- การตรวจสอบการกําหนดค่าบันเดิลของคุณไม่รวมสิ่งประดิษฐ์การพัฒนา
การปรับใช้แบบคงที่ไม่มีจุดสิ้นสุดระยะไกล
อาการ: กําลังรัน npx rayfin up staticapp deploy รายงานว่าไม่มีการตั้งค่าปลายทางระยะไกล
สาเหตุ:การปรับใช้แบบคงที่เท่านั้นจะอัปเดตการปรับใช้ที่มีอยู่ มันไม่สามารถจัดเตรียมแอประยะไกลเริ่มต้นได้
วิธีการแก้:
รันการปรับใช้เต็มรูปแบบครั้งเดียว:
npx rayfin up
หลังจากการจัดเตรียมเสร็จสิ้น ให้ใช้ npx rayfin up staticapp deploy สําหรับการอัปเดตแบบคงที่เท่านั้นในภายหลัง
ปัญหาการรับรองความถูกต้อง
การได้มาของโทเค็นการตรวจสอบสิทธิ์ล้มเหลว
อาการ:npx rayfin login หรือรายงาน Failed to acquire authentication token คําสั่ง CLI ที่ผ่านการตรวจสอบสิทธิ์อื่น ๆ หรือข้อผิดพลาดในการจัดเก็บข้อมูลรับรอง
สาเหตุ: CLI ไม่ได้ลงชื่อเข้าใช้ หรือสภาพแวดล้อมไม่ได้จัดเตรียมที่เก็บข้อมูลรับรองที่รองรับระบบปฏิบัติการ
วิธีการแก้:
เข้าสู่ระบบอีกครั้ง:
npx rayfin login
สําหรับสภาพแวดล้อมการพัฒนาแบบโลคอลที่มีข้อจํากัดโดยไม่มีที่เก็บข้อมูลรับรอง คุณสามารถเปิดใช้งานการสํารองการเข้ารหัสได้:
npx rayfin login --encryption-fallback-enabled
Warning
การสํารองการเข้ารหัสจะเก็บแคชโทเค็นในรูปแบบข้อความธรรมดา ใช้เฉพาะในสภาพแวดล้อมการพัฒนาที่เชื่อถือได้เท่านั้น อย่าใช้ในสภาพแวดล้อมที่ใช้งานจริงหรือใช้ร่วมกัน
เซสชันไม่คงอยู่หลังจากลงชื่อเข้าใช้
อาการ: ผู้ใช้จะออกจากระบบทันทีหลังจากการรับรองความถูกต้อง
สาเหตุ: ไคลเอ็นต์ไม่ได้กําหนดค่าด้วย URL พื้นฐานหรือคีย์ที่เผยแพร่ได้ที่ถูกต้อง
วิธีการแก้:
ตรวจสอบว่า RayfinClient การกําหนดค่าตรงกับแบ็กเอนด์ของคุณ:
const client = new RayfinClient({
baseUrl: import.meta.env.VITE_RAYFIN_API_URL ?? 'http://localhost:5168',
publishableKey: import.meta.env.VITE_RAYFIN_PUBLISHABLE_KEY,
});
ป๊อปอัป Fabric SSO ถูกบล็อก
อาการ: เบราว์เซอร์บล็อกหน้าต่างพอร์ทัล Fabric ในระหว่างการลงชื่อเข้าใช้
สาเหตุ:ensureSignedInWithFabric() ไม่ได้ถูกเรียกจากตัวจัดการท่าทางผู้ใช้
วิธีการแก้:
เรียกใช้ฟังก์ชันจากตัวจัดการเหตุการณ์แบบซิงโครนัส:
async function handleClick() {
await ensureSignedInWithFabric(client.auth, options);
}
// Attach to button click
<button onClick={handleClick}>Sign in</button>
การตรวจสอบสิทธิ์ Fabric หมดเวลา
อาการ: การตรวจสอบสิทธิ์ Fabric ล้มเหลวหลังจากห้านาที
สาเหตุ:พอร์ทัล Fabric ไม่ส่งรหัสโอนย้ายกลับก่อนที่โฟลว์จะหมดอายุ
วิธีการแก้:
ยืนยันว่า returnOrigin ตรงกับต้นทางของแอปคุณ ปิดป๊อปอัพ และเริ่มกระบวนการลงชื่อเข้าใช้อีกครั้ง
Fabric SSO รายงานความไม่ตรงกันของแหล่งกําเนิด
อาการ:การส่งต่อ Fabric SSO ปฏิเสธการตอบสนองเนื่องจากต้นทางไม่ตรงกัน
สาเหตุ:returnOrigin, allowedRedirectUris, หรือไม่fabricPortalUrlตรงกับสภาพแวดล้อมที่แอปและพอร์ทัล Fabric กําลังทํางานอยู่
วิธีการแก้:
- ตั้งค่า
returnOriginเป็นต้นกําเนิดเปล่าของแอปคุณ - ยืนยันว่าจุดกําเนิดปรากฏใน
services.auth.allowedRedirectUris. - ใช้ URL ของพอร์ทัล Fabric สําหรับสภาพแวดล้อมการผลิต ตัวอย่าง หรือการพัฒนาที่ถูกต้อง
- รัน
npx rayfin upหลังจากเปลี่ยนrayfin.yml.
สําหรับข้อมูลเพิ่มเติม ดูที่ กําหนดค่า URI สําหรับการเปลี่ยนเส้นทางการตรวจสอบสิทธิ์
initEmbeddedAuth() การคืนสินค้า null
อาการ: การตรวจสอบสิทธิ์แบบฝังตัวไม่ได้สร้างเซสชัน
สาเหตุ:SDK ไม่ตรวจพบว่าแอปกําลังทํางานอยู่ภายใน Fabric
วิธีการแก้:
รวม ?fabricEmbedded=true ใน URL แอป หรือตั้งค่า fabricEmbedded: true ใน FabricAuthOptions.
การตรวจสอบสิทธิ์ Fabric รายงานความไม่ตรงกันของสถานะ
อาการ: การลงชื่อเข้าใช้ล้มเหลวเนื่องจากสถานะการตอบกลับไม่ตรงกับสถานะคําขอ
สาเหตุ: การตอบกลับเป็นของโฟลว์ที่หมดอายุหรือความพยายามเข้าสู่ระบบก่อนหน้านี้
วิธีการแก้:
ปิดป๊อปอัพ Fabric แล้วเริ่มกระบวนการลงชื่อเข้าใช้ใหม่ อย่านํา URL callback หรือค่าสถานะจากความพยายามก่อนหน้ากลับมาใช้ซ้ํา
ปัญหาแบบจําลองข้อมูล
Data API ส่งคืนข้อผิดพลาดภายในเซิร์ฟเวอร์หลังจากการปรับใช้
อาการ:npx rayfin up หรือ npx rayfin up db apply สําเร็จ แต่ API ข้อมูล GraphQL หรือ REST ส่งคืนข้อผิดพลาดภายในเซิร์ฟเวอร์
สาเหตุ:บน Microsoft SQL Server @text() ฟิลด์ที่ไม่มีmaxจะNVARCHAR(MAX)สร้างคอลัมน์ ซึ่งอาจป้องกันการสร้างสคีมา GraphQL
วิธีการแก้:
เพิ่มความยาวสูงสุดที่ระบุไว้สําหรับแต่ละช่องข้อความที่ได้รับผลกระทบ:
@text({ max: 200 })
title!: string;
จากนั้นตรวจสอบและนําการเปลี่ยนแปลงสคีมาไปใช้:
npx rayfin up db apply --force
ข้อควรระวัง
ตรวจสอบการดําเนินการทั้งหมดที่รายงานก่อนใช้ --force. ตัวเลือกนี้อาจทําให้ข้อมูลสูญหายถาวรได้
บริการข้อมูลต้องการภาษาถิ่น
อาการ: การปรับใช้ล้มเหลวเมื่อมีการตอบกลับ HTTP 400 และรายงาน Dialect is required when Data module is enabled.
สาเหตุ:services.data.enabled เป็น trueแต่ rayfin.yml ไม่ได้กําหนดสําเนียงถิ่น
วิธีการแก้:
กําหนดค่า Microsoft SQL Server:
services:
data:
enabled: true
dialect: mssql
เอนทิตีใหม่ไม่พร้อมใช้งานหลังจากการปรับใช้
อาการ: การปรับใช้สําเร็จ แต่การสืบค้นกับเอนทิตีใหม่หรือที่เปลี่ยนแปลงล้มเหลวหรือแสดงพฤติกรรมเหมือนไม่มีเอนทิตีนั้น
สาเหตุ: สคีมาฐานข้อมูลอาจยังคงใช้งานอยู่ หรือส่วนหน้าอาจใช้ประเภทข้อมูลที่สร้างโดยระบบเก่าหรือการตั้งค่าที่แคชไว้
วิธีการแก้:
ตรวจสอบการปรับใช้:
npx rayfin up statusรอจนกว่าการส่งงานจะสมบูรณ์
รีเฟรชหรือสร้างส่วนหน้าใหม่.
หากเอนทิตียังล้มเหลว ให้ใช้สคีมาอย่างชัดเจน:
npx rayfin up db apply
สําหรับเวิร์กโฟลว์ทั้งหมด ดูที่ การใช้และตรวจสอบการเปลี่ยนแปลงสคีมา
ความสัมพันธ์ไม่ปรากฏใน API
อาการ: ฟิลด์เอนทิตีที่เกี่ยวข้องไม่พร้อมใช้งานเมื่อสอบถาม
สาเหตุ: ตัวตกแต่งการนําทางหายไปหรือไม่ได้ใช้ Schema
วิธีการแก้:
ตรวจสอบว่ามีตัวตกแต่งความสัมพันธ์:
@one(() => Notebook) notebook?: Notebook;นําสคีมาไปใช้อีกครั้ง
นโยบายการให้สิทธิ์ไม่ทํางาน
อาการ: ผู้ใช้สามารถเข้าถึงระเบียนที่ไม่ควรเห็นได้
สาเหตุ: นิพจน์นโยบายไม่ถูกต้องหรือชื่อการอ้างสิทธิ์ไม่ตรงกัน
วิธีการแก้:
ยืนยันว่านโยบายใช้ชื่อการอ้างสิทธิ์ที่ถูกต้อง (
sub,email, ):rolepolicy: (claims, item) => claims.sub.eq(item.user_id)บันทึก JWT ที่ถอดรหัสแล้วเพื่อยืนยันว่าค่าการอ้างสิทธิ์ตรงกับรหัสของคุณ
การตอบกลับ API เก่า
อาการ: ส่วนหน้าส่งคืนรูปร่างข้อมูลที่ล้าสมัยหลังจากการเปลี่ยนแปลงสคีมา
สาเหตุ: การกําหนดค่าที่สร้างขึ้นจะถูกแคช
วิธีการแก้:
หยุดแบ็กเอนด์
ลบไดเร็ก
.temp/ทอรีในrayfin/:rm -rf rayfin/.temp/รีสตาร์ทบริการและใช้ Schema อีกครั้ง
ปัญหา CLI
ไม่พบคําสั่ง
อาการ: การเรียกใช้ npx rayfin จะส่งกลับ "ไม่พบคําสั่ง"
สาเหตุ: ไม่ได้ติดตั้ง CLI หรือ npm ไม่อยู่ใน PATH ของคุณ
วิธีการแก้:
ตรวจสอบว่ามีการติดตั้ง Node.js และ npm แล้ว:
node --version npm --versionติดตั้งการขึ้นต่อกันอีกครั้ง:
npm install
เวอร์ชัน CLI ไม่ตรงกัน
อาการ: คําสั่ง CLI ล้มเหลวโดยมีข้อผิดพลาดที่ไม่คาดคิดหลังจากอัปเดต
สาเหตุ: เวอร์ชัน Cached CLI ล้าสมัย
วิธีการแก้:
อัปเดตและติดตั้งใหม่:
npm update --save
npm install
npx rayfin --version
ความไม่ตรงกันของเวอร์ชัน CLI ทั้งแบบทั่วโลกและภายในเครื่อง
อาการ: คําสั่ง CLI ล้มเหลวโดยมีข้อผิดพลาดที่ไม่คาดคิดในโครงการต่างๆ
สาเหตุ: การติดตั้งเวอร์ชัน CLI ทั่วโลกและในเครื่องและไม่ตรงกัน
วิธีแก้ไข: ตรวจสอบความถูกต้องของเวอร์ชัน npm list @microsoft/rayfin-cliในเครื่อง ซึ่งจะแสดงเวอร์ชันใน node_modules ของโปรเจ็กต์ปัจจุบันของคุณ ตรวจสอบเวอร์ชัน npm list -g @microsoft/rayfin-cliสากล นี่แสดงเวอร์ชันที่ติดตั้งทั่วทั้งระบบ ใช้กับ npm uninstall -g แพ็คเกจ Rayfin CLI เพื่อลบเวอร์ชันสากลและใช้เวอร์ชันในเครื่องของคุณ
ปัญหาการจัดการลับ
คําสั่งลับไม่แจ้งคําสั่ง
อาการ:npx rayfin secret set <NAME> ออกจากระบบโดยไม่แจ้งค่า
สาเหตุ:อินพุตมาตรฐานไม่ใช่เทอร์มินัลแบบโต้ตอบ หรือCIตัวแปรสภาพแวดล้อมถูกตั้งค่าเป็นtrue คําสั่งนี้ใช้พรอมต์โต้ตอบที่ถูกปกปิด
วิธีการแก้:
ใช้หนึ่งในทางเลือกที่รองรับสําหรับการสร้างความลับแบบไม่โต้ตอบต่อไปนี้:
ตั้งค่าความลับหนึ่งโดยส่งค่าของมันไปยังคําสั่ง:
Get-Content .\secret.txt | npx rayfin secret set <NAME> --stdinตั้งค่าความลับหลายรายการจากไฟล์สภาพแวดล้อม:
npx rayfin secret set --env-file .\secrets.env
เก็บค่าความลับออกจากประวัติเชลล์ของคุณ และอย่า commit secret.txt หรือ .\secrets.env ควบคุมซอร์สโค้ด
คําสั่งลับคืนสิทธิ์ถูกปฏิเสธ
อาการ:npx rayfin secret set หรือ npx rayfin secret list ส่งคืนข้อผิดพลาดสิทธิ์
สาเหตุ:แอปไม่ได้ถูกติดตั้ง หรือบัญชีที่ลงชื่อเข้าใช้ไม่สามารถเข้าถึงพื้นที่ทํางาน Fabric เป้าหมายได้
วิธีการแก้:
- รัน
npx rayfin upเพื่อจัดเตรียมแอป - เรียกใช้
npx rayfin loginและเลือกบัญชีที่มีสิทธิ์เข้าถึงพื้นที่ทํางาน - ลองใช้คําสั่งลับอีกครั้ง
สําหรับข้อมูลเพิ่มเติม ดูที่ จัดการความลับของฟังก์ชัน
ปัญหาเกี่ยวกับการสร้างและบรรจุภัณฑ์
คําสั่งสร้างล้มเหลว
อาการ: การปรับใช้โฮสติ้งแบบคงที่ล้มเหลวเนื่องจากคําสั่งบิลด์ไม่สร้างเอาต์พุต
สาเหตุ: สร้างข้อผิดพลาดหรือคําสั่งบิลด์ที่กําหนดค่าไม่ถูกต้อง
วิธีการแก้:
เรียกใช้คําสั่งบิลด์ด้วยตนเอง:
npm run buildแก้ไขข้อผิดพลาดที่รายงาน
ตรวจสอบว่าโฟลเดอร์เอาต์พุตมีไฟล์
โฟลเดอร์คงที่ว่างเปล่า
อาการ: การปรับใช้แบบคงที่ล้มเหลวด้วยข้อผิดพลาด "โฟลเดอร์ว่าง"
สาเหตุ: เส้นทางที่กําหนดค่า folder ไม่ถูกต้อง
วิธีการแก้:
ยืนยัน folder เส้นทางใน rayfin.yml ตรงกับเอาต์พุตบิลด์ของคุณ:
services:
staticHosting:
folder: dist # Verify this matches your build output
buildCommand: npm run build
ปัญหาฐานข้อมูล
การใช้สคีมาฐานข้อมูลล้มเหลว
อาการ: จะวิ่ง npx rayfin up db apply หรือ npx rayfin up db apply --force ล้มเหลว
สาเหตุ: สคีมาในฐานข้อมูลระยะไกลและสคีมาที่กําหนดในโค้ดแอปจะไม่ตรงกัน โค้ดแอปคือแหล่งข้อมูลความจริงสําหรับแอป Fabric
อย่าแก้ไขสคีมาฐานข้อมูลระยะไกลผ่านพอร์ทัล Fabric, SQL Server Management Studio (SSMS), ส่วนขยาย SQL Server สําหรับ Visual Studio Code หรือเครื่องมือ SQL อื่น ๆ การเปลี่ยนแปลงต่อไปนี้ต่อคอลัมน์ในเอนทิตีข้อมูลไม่รองรับ:
- การเปลี่ยนชื่อคอลัมน์
- การเปลี่ยนชนิดข้อมูลของคอลัมน์
- การลบคอลัมน์
รองรับการเพิ่มคอลัมน์ การลบหรือแก้ไขคอลัมน์ที่มีอยู่อาจทําให้แอปและการปรับใช้บน Fabric เสียหาย
วิธีการแก้:
ย้อนกลับการเปลี่ยนแปลงด้วยตนเองใด ๆ ในสคีมาฐานข้อมูลระยะไกลให้ตรงกับสคีมาในโค้ดแอป
หากตัวแทนโค้ดได้ทําการเปลี่ยนแปลงสคีมาที่ไม่รองรับในโค้ดแอป ให้สั่งให้ตัวแทนย้อนกลับการเปลี่ยนแปลงนั้น
รันคําสั่ง apply สคีมาอีกครั้ง:
npx rayfin up db applyสําหรับการเปลี่ยนชื่อ
--forceคอลัมน์ อาจช่วยให้การอัปเดตสคีมาเสร็จสมบูรณ์:npx rayfin up db apply --forceข้อควรระวัง
การใช้
--forceอาจทําให้ข้อมูลสูญหายอย่างถาวร ตรวจสอบการดําเนินการที่เสนอและยืนยันว่าคุณยอมรับความเสี่ยงในการสูญหายของข้อมูลก่อนดําเนินการต่อ
การเชื่อมต่อถูกปฏิเสธ
อาการ: การดําเนินการข้อมูลล้มเหลวด้วยข้อผิดพลาดในการเชื่อมต่อ
สาเหตุ: คอนเทนเนอร์ฐานข้อมูลไม่ทํางานหรือการตรวจสอบสถานภาพล้มเหลว
วิธีการแก้:
ตรวจสอบบันทึกคอนเทนเนอร์:
docker compose logs -fรีสตาร์ทบริการ
ข้อมูลสูญหายหลังจากรีสตาร์ท
อาการ: ข้อมูลจะหายไปหลังจากหยุดและเริ่มบริการ
สาเหตุ: เล่มถูกลบด้วย--purge
วิธีการแก้:
ใช้ --down แทนการ --purge เก็บรักษาข้อมูล
ข้อจำกัดที่ทราบ
สําหรับข้อจํากัดในปัจจุบันและวิธีแก้ปัญหาที่แนะนํา ให้ดู:
-
count()ไม่พร้อมใช้งานในไคลเอ็นต์ GraphQL ที่คล่องแคล่ว ให้ใช้results.length - ไม่รองรับความสัมพันธ์แบบกลุ่มต่อกลุ่ม ให้ใช้เอนทิตีการรวมที่ชัดเจน
- ออบเจ็กต์เซสชันทึบแสง - ตรวจสอบ
isAuthenticatedหรือuserคุณสมบัติ - หลังจากเปิดหรือปิดใช้งานการตรวจสอบสิทธิ์ใน
rayfin.ymlรีสตาร์ทแบ็กเอนด์
รับความช่วยเหลือ
ถ้าปัญหายังคงอยู่:
- ตรวจสอบเอกสารประกอบของแอป Fabric
- ตรวจสอบที่เก็บ GitHub สําหรับปัญหาที่ทราบ
- ยื่นรายงานข้อบกพร่องพร้อมบันทึกโดยละเอียดและขั้นตอนการทําสําเนา