Errore di autorizzazione personalizzata LWC nell'organizzazione dell'abbonato: ID modulo non valido "MY_NAMESPACE__My_Custom_Permission" per il tipo "customPermission"

Aug 17 2020

Sto tentando di accedere a un'autorizzazione personalizzata in un componente Web Lightning.

Questo è il codice js nella mia organizzazione di sviluppo del pacchetto gestito:

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

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

Questo codice funziona bene nell'organizzazione di sviluppo e mi dà correttamente My_Custom_Permission.

Quando rilascio il pacchetto gestito e lo installo nell'organizzazione dell'abbonato, ottengo il seguente errore:

Questa pagina ha un errore. Potrebbe essere necessario aggiornarlo. Errore di compilazione myLwcComponent.js: 0,0: LWC1504: ID modulo non valido "MY_NAMESPACE__My_Custom_Permission" per il tipo "customPermission". L'uso esplicito dello spazio dei nomi "MY_NAMESPACE" nel file "myLwcComponent.js" è vietato. Utilizza invece lo spazio dei nomi predefinito "c".

Qualche idea su come farlo funzionare?

Ovviamente sta cercando di assegnare uno spazio ai nomi alla mia autorizzazione personalizzata nell'organizzazione dell'abbonato.

Nell'organizzazione di sviluppo del pacchetto gestito, ho anche provato a anteporre all'autorizzazione personalizzata lo spazio dei nomi predefinito "c" e il mio spazio dei nomi "MY_NAMESPACE", ma vengono visualizzati degli errori.

per esempio

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

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

per esempio

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

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

Risposte

1 sfdcfox Aug 17 2020 at 20:23

Questo è uno di quei casi in cui dovresti usare un'organizzazione Scratch. Registra il tuo spazio dei nomi con il tuo hub di sviluppo e usalo per lo sviluppo invece di un'organizzazione Developer Edition. Usa la c__permissionnotazione e tutto dovrebbe funzionare bene. Trovo frustrante che il codice non sia trasferibile tra le organizzazioni con spazio dei nomi e non con spazio dei nomi, anche se non sono del tutto sorpreso, poiché ci sono stati numerosi problemi con gli spazi dei nomi in tutta la storia di Salesforce. Usare Scratch Orgs è il modo principale per evitare qualsiasi problema di sviluppo dello spazio dei nomi, dal momento che non dovrai mai più occuparti di una Development Edition senza spazio dei nomi.