PR

【Salesforce】isLockerServoceEnabled がないようです

blog-eyecatch-error Salesforce
この記事は約4分で読めます。
記事内に広告が含まれています。

Salesforce のデプロイ作業中に、「コンポーネント ID *** を持つ ***/config/mainAppPage.json のプロパティ isLockerServoceEnabled がないようです というエラーが表示された場合の対処方法です。

エラーの対象リソース

エラー画面では種別「Site.com」 と表示されますが、実際は ExperienceBundle のデプロイで発生します。

ExperienceBundle について

Salesforce のエクスペリエンスサイトをメタデータ デプロイする時の形式の一つです。

利用するには、「ExperienceBundle メタデータ API を有効化」設定をONにする必要があります。

従来の Site.com 形式のデプロイはバイナリ型だったため、リソースの内容が不明瞭でした。

一方、ExperienceBundle は json 形式でコンテンツが取得できるため、ソース管理しやすいです。

なお、Experienceサイトのテンプレート種別の一つである、LWRテンプレートは ExperienceBundle 形式のデプロイしか対応していません。

スポンサーリンク

Package.xml では以下のように記載します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>xxx</members>
        <name>ExperienceBundle</name>
    </types>
    <version>56.0</version>
</Package>

ちなみに、サイトのデプロイ時には上記の ExperienceBundle 以外にも「Network」「Site」等のメタ情報が必要になります。

エラーの原因

mainAppPage.json という設定ファイルに、「isLockerService」要素がないためです。

Salesforceプロジェクトをソース管理している場合、mainAppPage.json ファイルのパスは以下になります。

force-app/main/default/experiences/{あなたのサイト名}/config/mainAppPage.json

私は Salesforce の Winter '23 のアップデート後(2022年11月)に直面しました。

公式開発者ガイドの情報によると、以下の記述があります。

Lightning Locker が有効化されるか (true)、無効化されるか (false) を示します。デフォルト値は true です。

Lightning Locker を無効にする前に、isRelaxedCSPLevel を true に設定する必要があります。API バージョン 55.0 以降で利用できます。

メタデータ API 開発者ガイド:ExperienceBundle
ExperienceBundle | メタデータ API 開発者ガイド | Salesforce Developers
ページ、ブランドセット、テーマなどエクスペリエンスビルダーサイトを構成する設定やサイトコンポーネントのテキストベースのコード構造を表します。開発者は、お気に入りの開発ツールを使用して、エクスペリエンス...

少し前のバージョンで開発したサイトに手を加え、デプロイする際はご注意ください。

例え何も追加設定/開発を行っていなくとも、デプロイ時にエラーになる可能性はあります。

スポンサーリンク

解決策

開発した環境にて、再度 ExperienceBundle をリトリーブします。

変更差分が取得できればそれで解決です。

しかし、差分がない場合は、先述の mainAppPage.json ファイルに、手動で以下を追記します。

"isLockerServiceEnabled": true

LockerService は Lightning のセキュリティを高める仕組みのため、原則ONにしておく必要があります。

デフォルト値は true であるため、意図的に false にしたい場合以外は true でデプロイすることをお勧めします。

おわりに

Experience Cloud でエクスペリエンスサイトを実装する際は、デプロイに非常に苦労します。

Salesforce のデプロイ作業は、メジャーバージョンアップ毎に生じるのエラーとの戦いです。

エラーの日本語リソースが少ないため、このようなトラブルシューティングは積極的に発信していこうと思います。

本記事が少しでもお役に立ちますように。

スポンサーリンク

コメント

タイトルとURLをコピーしました