Ошибка настраиваемого разрешения LWC в организации подписчика: недопустимый идентификатор модуля «MY_NAMESPACE__My_Custom_Permission» для типа «customPermission»
Я пытаюсь получить доступ к настраиваемому разрешению в веб-компоненте Lightning.
Это код 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. Зарегистрируйте свое пространство имен в своем центре разработки и используйте его для разработки вместо организации Developer Edition. Используйте c__permission
обозначения, и все должно работать нормально. Меня действительно расстраивает то, что код не переносится между организациями с пространствами имен и без них, хотя я не совсем удивлен, поскольку на протяжении всей истории Salesforce возникало множество проблем с пространствами имен. Использование Scratch Orgs - это основной способ избежать любых проблем с разработкой пространства имен, поскольку вам больше никогда не придется иметь дело с Development Edition без пространства имен.