ข้อผิดพลาดของสิทธิ์ที่กำหนดเอง LWC ในองค์กรสมาชิก: รหัสโมดูลไม่ถูกต้อง“ MY_NAMESPACE__My_Custom_Permission” สำหรับประเภท“ customPermission”

Aug 17 2020

ฉันพยายามเข้าถึงสิทธิ์แบบกำหนดเองใน 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

คำตอบ

1 sfdcfox Aug 17 2020 at 20:23

นี่เป็นหนึ่งในกรณีที่คุณตั้งใจจะใช้ Scratch Org ลงทะเบียนเนมสเปซของคุณกับฮับ dev ของคุณและใช้เพื่อการพัฒนาแทนองค์กร Developer Edition ใช้c__permissionสัญกรณ์และทุกอย่างจะทำงานได้ดี ฉันพบว่ามันน่าหงุดหงิดที่รหัสไม่สามารถพกพาได้ระหว่างองค์กรที่มีการกำหนดชื่อและไม่ระบุชื่อแม้ว่าฉันจะไม่แปลกใจเลยก็ตามเนื่องจากมีปัญหามากมายเกี่ยวกับเนมสเปซตลอดประวัติศาสตร์ของ Salesforce การใช้ Scratch Orgs เป็นวิธีหลักในการหลีกเลี่ยงปัญหาการพัฒนาเนมสเปซใด ๆ ทั้งสิ้นเนื่องจากคุณจะไม่ต้องจัดการกับ Development Edition ที่ไม่มีชื่ออีก