Ошибка настраиваемого разрешения LWC в организации подписчика: недопустимый идентификатор модуля «MY_NAMESPACE__My_Custom_Permission» для типа «customPermission»

Aug 17 2020

Я пытаюсь получить доступ к настраиваемому разрешению в веб-компоненте 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

Ответы

1 sfdcfox Aug 17 2020 at 20:23

Это один из тех случаев, когда вы должны использовать Scratch Org. Зарегистрируйте свое пространство имен в своем центре разработки и используйте его для разработки вместо организации Developer Edition. Используйте c__permissionобозначения, и все должно работать нормально. Меня действительно расстраивает то, что код не переносится между организациями с пространствами имен и без них, хотя я не совсем удивлен, поскольку на протяжении всей истории Salesforce возникало множество проблем с пространствами имен. Использование Scratch Orgs - это основной способ избежать любых проблем с разработкой пространства имен, поскольку вам больше никогда не придется иметь дело с Development Edition без пространства имен.