Error de permiso personalizado de LWC en la organización del suscriptor: ID de módulo no válido "MY_NAMESPACE__My_Custom_Permission" para el tipo "customPermission"

Aug 17 2020

Estoy intentando acceder a un permiso personalizado en un componente web Lightning.

Este es el código js en mi organización de desarrollo de paquetes administrados:

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

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

Este código funciona bien en la organización de desarrollo y me da correctamente My_Custom_Permission.

Cuando libero el paquete administrado y lo instalo en la organización del suscriptor, aparece el siguiente error:

Esta página tiene un error. Es posible que solo necesite actualizarlo. Error de compilación myLwcComponent.js: 0,0: LWC1504: ID de módulo no válido "MY_NAMESPACE__My_Custom_Permission" para el tipo "customPermission". Está prohibido el uso explícito del espacio de nombres "MY_NAMESPACE" en el archivo "myLwcComponent.js". En su lugar, utilice el espacio de nombres predeterminado "c".

¿Alguna idea de cómo hacer que esto funcione?

Obviamente, está tratando de asignar un espacio de nombres a mi permiso personalizado en la organización de suscriptores.

En la organización de desarrollo de paquetes administrados, también intenté prefijar el permiso personalizado con el espacio de nombres predeterminado 'c' y mi espacio de nombres 'MY_NAMESPACE', pero obtengo errores.

p.ej

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

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

p.ej

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

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

Respuestas

1 sfdcfox Aug 17 2020 at 20:23

Este es uno de esos casos en los que se supone que debe utilizar una organización temporal. Registre su espacio de nombres con su centro de desarrollo y utilícelo para el desarrollo en lugar de una organización de Developer Edition. Usa la c__permissionnotación y todo debería funcionar bien. Me parece frustrante que el código no sea portátil entre organizaciones con espacio de nombres y sin espacio de nombres, aunque no me sorprende del todo, ya que ha habido numerosos problemas con los espacios de nombres a lo largo de la historia de Salesforce. Usar Scratch Orgs es la forma principal de evitar todos y cada uno de los problemas de desarrollo del espacio de nombres, ya que nunca más tendrá que lidiar con una edición de desarrollo sin espacios de nombres.