Erro de permissão personalizada LWC na organização do assinante: ID de módulo inválido “MY_NAMESPACE__My_Custom_Permission” para o tipo “customPermission”
Estou tentando acessar uma permissão personalizada em um componente da Web do Lightning.
Este é o código js em minha organização de desenvolvimento de pacote gerenciado:
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 bem na organização de desenvolvimento e me dá My_Custom_Permission corretamente.
Quando eu liberar o pacote gerenciado e instalá-lo na organização do assinante, recebo o seguinte erro:
Esta página contém um erro. Você só precisa atualizá-lo. Falha de compilação myLwcComponent.js: 0,0: LWC1504: ID de módulo inválido "MY_NAMESPACE__My_Custom_Permission" para o tipo "customPermission". O uso explícito do namespace "MY_NAMESPACE" no arquivo "myLwcComponent.js" é proibido. Em vez disso, use o namespace padrão "c".
Alguma ideia de como fazer isso funcionar?
Obviamente, ele está tentando criar um namespace para minha permissão personalizada na organização do assinante.
Na organização de desenvolvimento de pacote gerenciado, também tentei prefixar a permissão personalizada com o namespace padrão 'c' e meu namespace 'MY_NAMESPACE', mas obtive erros.
por exemplo
Para import hasCustomPermission from '@salesforce/customPermission/MY_NAMESPACE__My_Custom_Permission';
Erro: 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.
por exemplo
Para import hasCustomPermission from '@salesforce/customPermission/c__My_Custom_Permission';
Erro: Invalid reference c__My_Custom_Permission of type customPermission in file myLwcComponent.js
Respostas
Este é um daqueles casos em que você deve usar uma organização Scratch. Registre seu namespace com seu hub de desenvolvimento e use-o para desenvolvimento em vez de uma organização Developer Edition. Use a c__permission
notação, e tudo deve funcionar bem. Acho frustrante que o código não seja portátil entre organizações com espaço de nomes e sem espaço de nomes, embora não esteja totalmente surpreso, já que houve vários problemas com espaços de nomes em toda a história do Salesforce. Usar Scratch Orgs é a principal maneira de evitar todo e qualquer problema de desenvolvimento de namespace, já que você nunca mais terá que lidar com uma edição de desenvolvimento sem namespace.