ข้อผิดพลาดของสิทธิ์ที่กำหนดเอง LWC ในองค์กรสมาชิก: รหัสโมดูลไม่ถูกต้อง“ MY_NAMESPACE__My_Custom_Permission” สำหรับประเภท“ customPermission”
ฉันพยายามเข้าถึงสิทธิ์แบบกำหนดเองใน Lightning Web Component
นี่คือรหัส js ในองค์กรพัฒนาแพ็คเกจที่มีการจัดการของฉัน:
import { LightningElement } from 'lwc';
import hasCustomPermission from '@salesforce/customPermission/My_Custom_Permission';
export default class MyLwcComponent extends LightningElement {
get isCustomPermissionEnabled() {
return hasCustomPermission;
{
}
รหัสนี้ใช้งานได้ดีในองค์กรการพัฒนาและให้ My_Custom_Permission แก่ฉันอย่างถูกต้อง
เมื่อฉันปล่อยแพ็คเกจที่มีการจัดการและติดตั้งในองค์กรสมาชิกฉันได้รับข้อผิดพลาดต่อไปนี้:
หน้านี้มีข้อผิดพลาด คุณอาจต้องรีเฟรช การคอมไพล์ล้มเหลว myLwcComponent.js: 0,0: LWC1504: รหัสโมดูลไม่ถูกต้อง "MY_NAMESPACE__My_Custom_Permission" สำหรับประเภท "customPermission" ห้ามใช้เนมสเปซ "MY_NAMESPACE" อย่างชัดเจนในไฟล์ "myLwcComponent.js" ใช้เนมสเปซเริ่มต้น "c" แทน
มีความคิดอย่างไรที่จะทำงานนี้
เห็นได้ชัดว่าพยายามเนมสเปซสิทธิ์ที่กำหนดเองของฉันในองค์กรสมาชิก
ในองค์กรพัฒนาแพ็กเกจที่มีการจัดการฉันได้ลองใช้คำนำหน้าสิทธิ์ที่กำหนดเองด้วยทั้งเนมสเปซเริ่มต้น 'c' และเนมสเปซ 'MY_NAMESPACE' แต่ได้รับข้อผิดพลาด
เช่น
สำหรับ import hasCustomPermission from '@salesforce/customPermission/MY_NAMESPACE__My_Custom_Permission';
ข้อผิดพลาด: LWC1504: Invalid module id "MY_NAMESPACE__My_Custom_Permission" for type "customPermission". Explicit use of namespace "MY_NAMESPACE" in file "myLwcComponent.js" is prohibited. Use default namespace "c" instead.
เช่น
สำหรับ import hasCustomPermission from '@salesforce/customPermission/c__My_Custom_Permission';
ข้อผิดพลาด: Invalid reference c__My_Custom_Permission of type customPermission in file myLwcComponent.js
คำตอบ
นี่เป็นหนึ่งในกรณีที่คุณตั้งใจจะใช้ Scratch Org ลงทะเบียนเนมสเปซของคุณกับฮับ dev ของคุณและใช้เพื่อการพัฒนาแทนองค์กร Developer Edition ใช้c__permission
สัญกรณ์และทุกอย่างจะทำงานได้ดี ฉันพบว่ามันน่าหงุดหงิดที่รหัสไม่สามารถพกพาได้ระหว่างองค์กรที่มีการกำหนดชื่อและไม่ระบุชื่อแม้ว่าฉันจะไม่แปลกใจเลยก็ตามเนื่องจากมีปัญหามากมายเกี่ยวกับเนมสเปซตลอดประวัติศาสตร์ของ Salesforce การใช้ Scratch Orgs เป็นวิธีหลักในการหลีกเลี่ยงปัญหาการพัฒนาเนมสเปซใด ๆ ทั้งสิ้นเนื่องจากคุณจะไม่ต้องจัดการกับ Development Edition ที่ไม่มีชื่ออีก