Kesalahan izin khusus LWC di organisasi pelanggan: ID modul "MY_NAMESPACE__My_Custom_Permission" tidak valid untuk jenis "customPermission"
Saya mencoba mengakses izin khusus di Komponen Web Lightning.
Ini adalah kode js di organisasi pengembangan paket terkelola saya:
import { LightningElement } from 'lwc';
import hasCustomPermission from '@salesforce/customPermission/My_Custom_Permission';
export default class MyLwcComponent extends LightningElement {
get isCustomPermissionEnabled() {
return hasCustomPermission;
{
}
Kode ini berfungsi dengan baik di organisasi pengembangan dan memberi saya My_Custom_Permission.
Ketika saya merilis paket terkelola dan menginstalnya di org pelanggan, saya mendapatkan kesalahan berikut:
Halaman ini mengalami kesalahan. Anda mungkin hanya perlu menyegarkannya. Kegagalan Penyusunan myLwcComponent.js: 0,0: LWC1504: ID modul "MY_NAMESPACE__My_Custom_Permission" tidak valid untuk jenis "customPermission". Dilarang menggunakan namespace "MY_NAMESPACE" dalam file "myLwcComponent.js". Gunakan namespace default "c" sebagai gantinya.
Ada ide bagaimana membuat ini bekerja?
Ini jelas mencoba memberi nama pada izin khusus saya di organisasi pelanggan.
Di organisasi pengembangan paket terkelola, saya juga mencoba memberi awalan izin khusus dengan namespace default 'c' dan namespace saya 'MY_NAMESPACE', tetapi mendapatkan kesalahan.
misalnya
Untuk import hasCustomPermission from '@salesforce/customPermission/MY_NAMESPACE__My_Custom_Permission';
Kesalahan: 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.
misalnya
Untuk import hasCustomPermission from '@salesforce/customPermission/c__My_Custom_Permission';
Kesalahan: Invalid reference c__My_Custom_Permission of type customPermission in file myLwcComponent.js
Jawaban
Ini adalah salah satu kasus di mana Anda dimaksudkan untuk menggunakan Scratch Org. Daftarkan namespace Anda dengan hub dev , dan gunakan itu untuk pengembangan alih-alih organisasi Edisi Pengembang. Gunakan c__permission
notasi, dan semuanya akan bekerja dengan baik. Saya merasa frustasi bahwa kode tersebut tidak portabel antara organisasi dengan namespace dan non-namespace, meskipun saya tidak sepenuhnya terkejut, karena ada banyak masalah dengan namespace di sepanjang sejarah Salesforce. Menggunakan Scratch Orgs adalah cara utama untuk menghindari setiap dan semua masalah pengembangan namespace, karena Anda tidak perlu lagi berurusan dengan Edisi Pengembangan tanpa namespace.