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"
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
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__permission
notació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.