サブスクライバー組織でのLWCカスタムパーミッションエラー:タイプ「customPermission」のモジュールID「MY_NAMESPACE__My_Custom_Permission」が無効です

Aug 17 2020

LightningWebコンポーネントのカスタムアクセス許可にアクセスしようとしています。

これは私のマネージドパッケージ開発組織のjsコードです:

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

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

このコードは開発組織で正常に機能し、My_Custom_Permissionを正しく提供します。

管理パッケージをリリースしてサブスクライバー組織にインストールすると、次のエラーが発生します。

このページにエラーがあります。更新する必要があるかもしれません。コンパイルの失敗myLwcComponent.js:0,0:LWC1504:タイプ「customPermission」のモジュールID「MY_NAMESPACE__My_Custom_Permission」が無効です。ファイル「myLwcComponent.js」で名前空間「MY_NAMESPACE」を明示的に使用することは禁止されています。代わりに、デフォルトの名前空間「c」を使用してください。

これを機能させる方法はありますか?

明らかに、サブスクライバー組織でカスタム権限に名前空間を付けようとしています。

マネージドパッケージ開発組織では、カスタム権限の前にデフォルトの名前空間「c」と名前空間「MY_NAMESPACE」の両方を付けようとしましたが、エラーが発生します。

例えば

にとって import hasCustomPermission from '@salesforce/customPermission/MY_NAMESPACE__My_Custom_Permission';

エラー: 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.

例えば

にとって import hasCustomPermission from '@salesforce/customPermission/c__My_Custom_Permission';

エラー: Invalid reference c__My_Custom_Permission of type customPermission in file myLwcComponent.js

回答

1 sfdcfox Aug 17 2020 at 20:23

これは、スクラッチ組織を使用することを意図しているケースの1つです。名前空間を開発ハブに登録し、DeveloperEdition組織の代わりにそれを開発に使用します。c__permission表記を使用すると、すべてが正常に機能するはずです。Salesforceの歴史を通じて名前空間に多くの問題があったため、完全に驚いたわけではありませんが、コードが名前空間のある組織と名前空間のない組織の間で移植できないことは苛立たしいことです。名前空間のないDevelopmentEditionを二度と扱う必要がないため、ScratchOrgsを使用することが名前空間開発の問題を回避する主な方法です。