Erreur d'autorisation personnalisée LWC dans l'organisation abonnée: ID de module non valide "MY_NAMESPACE__My_Custom_Permission" pour le type "customPermission"

Aug 17 2020

J'essaie d'accéder à une autorisation personnalisée dans un composant Web Lightning.

Voici le code js dans mon organisation de développement de packages gérés:

import { LightningElement } from 'lwc';
import hasCustomPermission from '@salesforce/customPermission/My_Custom_Permission';

export default class MyLwcComponent extends LightningElement {
    
    get isCustomPermissionEnabled() {
        return hasCustomPermission;
    {
}

Ce code fonctionne correctement dans l'organisation de développement et me donne correctement My_Custom_Permission.

Lorsque je publie le package géré et l'installe dans l'organisation abonnée, j'obtiens l'erreur suivante:

Cette page contient une erreur. Vous devrez peut-être simplement le rafraîchir. Échec de compilation myLwcComponent.js: 0,0: LWC1504: ID de module non valide "MY_NAMESPACE__My_Custom_Permission" pour le type "customPermission". L'utilisation explicite de l'espace de noms "MY_NAMESPACE" dans le fichier "myLwcComponent.js" est interdite. Utilisez plutôt l'espace de noms par défaut «c».

Une idée de comment faire fonctionner cela?

Il essaie évidemment d'espacer mon autorisation personnalisée dans l'organisation abonnée.

Dans l'organisation de développement de packages gérés, j'ai également essayé de préfixer l'autorisation personnalisée à la fois avec l'espace de noms par défaut «c» et mon espace de noms «MY_NAMESPACE», mais j'obtiens des erreurs.

par exemple

Pour import hasCustomPermission from '@salesforce/customPermission/MY_NAMESPACE__My_Custom_Permission';

Erreur: 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.

par exemple

Pour import hasCustomPermission from '@salesforce/customPermission/c__My_Custom_Permission';

Erreur: Invalid reference c__My_Custom_Permission of type customPermission in file myLwcComponent.js

Réponses

1 sfdcfox Aug 17 2020 at 20:23

C'est l'un de ces cas où vous êtes censé utiliser une organisation Scratch. Enregistrez votre espace de noms auprès de votre hub de développement et utilisez-le pour le développement au lieu d'une organisation Developer Edition. Utilisez la c__permissionnotation, et tout devrait fonctionner correctement. Je trouve frustrant que le code ne soit pas portable entre les organisations à espace de nom et sans espace de nom, bien que je ne sois pas entièrement surpris, car il y a eu de nombreux problèmes avec les espaces de nom tout au long de l'histoire de Salesforce. L'utilisation de Scratch Orgs est le principal moyen d'éviter tous les problèmes de développement d'espaces de noms, car vous n'aurez plus jamais à faire face à une édition de développement sans espace de noms.