(サイトのインストール直後に)drush cim -y
コマンドを実行すると、次のエラーが表示されます。
Drupal\Core\Config\ConfigImporterException: There were errors validating the config synchronization. in Drupal\Core\Config\ConfigImporter->validate() (line 728 of /var/www/ifc_test/web/core/lib/Drupal/Core/Config/ConfigImporter.php).
The import failed due for the following reasons:
Unable to install the <em class="placeholder">XYZ</em> module since it requires the <em class="placeholder">YAML
Editor</em> module.
Configuration <em class="placeholder">XYZ.conf</em> depends on the <em
class="placeholder">YAML Editor</em> module that will not be installed after import.
Configuration <em class="placeholder">yaml_editor.config</em> depends on the <em class="placeholder">YAML Editor</em> module that will
not be installed after import.
(XYZ
はカスタムモジュールの名前です)
yaml_editor
contribモジュールがあります。設定インポーターが「yaml_editor」を有効にしないのはなぜですか?つまり、それが依存関係宣言の目的です。また、サイトのインストール後に有効にならない他のモジュールがいくつかあります。これらはdrush cim
プロセス中に有効になります。
もちろんdrush en yaml_editor -y
は問題を解決しますが、それはビルドプロセスの一部であり、この奇妙なことが起こっているという理由だけで、デプロイメントスクリプトに余分な行を挿入したくありません。
構成管理がこの依存関係を有効にしない(インストールする)理由、および「インポート後にインストールされない」と表示される理由
yaml_editor
からcore.extension.yml
問題を解決しました。複雑なため、おそらく削除されましたgit merge
、それが私のインストールプロセスが突然失敗し始めた理由です。
同じ問題がありました。次のような私の状況
設定を含むカスタムモジュール。エクスポート時に、名前でエクスポートされたモジュールの構成データは、(xxx.settings.yml)としてコード(php)構成名と一致します。 「xxx」がモジュール名と一致しない場合、エラーが発生します。
ソースコードの設定名を変更しましたが、うまくいきます。
提案:
drush config-import --partial
で部分的なインポートを試みてください。必須/不足しているモジュールがcore.extension.yml
にあることを確認してください。
module:
missing_module: 0
注:Configuration Splitモジュールを使用している場合は、モジュールをすべてのファイルに追加してください。
drush updb
を実行し、キャッシュ(drush cr
)をクリアしたことを確認してください。
core.extension.yml
)、次に再度インポートしてください。/admin/config/development/configuration
)からSynchronizeを試してください。別の方法として、 config importDrupal Console を使用してみてください。時々、それは何が問題なのかについてより多くの手がかりを与える可能性があります。例えば。
drupal config:import
または 単一のアイテム またはファイル(--file
)の場合は、次を試してください。
drupal config:import:single
本当の原因:
Yaml Editorモジュールがdrushcr.php
の下のweb/sites/default
に次のように追加されました:
$command_specific['config-export']['skip-modules'] = ['yaml_editor'];
$command_specific['config-import']['skip-modules'] = ['yaml_editor'];
このようにして、drush cimやcexからのモジュールを無視して、モジュールを有効/無効にすることができます。ローカルホストでdevelやkintなどのモジュールが有効になるため、これは開発時に非常に役立ちますが、構成を変更してcexを作成すると、これらの開発モジュールは本番サイトでは有効になりません。
最新のコードで設定をチェックアウトし、drush cr
を実行します。
その後、構成をローカルにインポートします。
drush cim -y