web-dev-qa-db-ja.com

Aモジュールが必要なため、XYZモジュールをインストールできません

(サイトのインストール直後に)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はカスタムモジュールの名前です)

  1. モジュールの下にyaml_editor contribモジュールがあります。
  2. 上記の設定ファイルで依存関係が宣言されています。
  3. 「yaml_editor」を「core.extension.yml」に追加して、インストールされていることを確認します。

設定インポーターが「yaml_editor」を有効にしないのはなぜですか?つまり、それが依存関係宣言の目的です。また、サイトのインストール後に有効にならない他のモジュールがいくつかあります。これらはdrush cimプロセス中に有効になります。

もちろんdrush en yaml_editor -yは問題を解決しますが、それはビルドプロセスの一部であり、この奇妙なことが起こっているという理由だけで、デプロイメントスクリプトに余分な行を挿入したくありません。

構成管理がこの依存関係を有効にしない(インストールする)理由、および「インポート後にインストールされない」と表示される理由

7
ssibal

yaml_editorからcore.extension.yml問題を解決しました。複雑なため、おそらく削除されましたgit merge、それが私のインストールプロセスが突然失敗し始めた理由です。

10
ssibal

同じ問題がありました。次のような私の状況

設定を含むカスタムモジュール。エクスポート時に、名前でエクスポートされたモジュールの構成データは、(xxx.settings.yml)としてコード(php)構成名と一致します。 「xxx」がモジュール名と一致しない場合、エラーが発生します。

ソースコードの設定名を変更しましたが、うまくいきます。

4
Ali

提案:

  • drush config-import --partialで部分的なインポートを試みてください。
  • 必須/不足しているモジュールがcore.extension.ymlにあることを確認してください。

    module:
      missing_module: 0
    

    注:Configuration Splitモジュールを使用している場合は、モジュールをすべてのファイルに追加してください。

  • drush updbを実行し、キャッシュ(drush cr)をクリアしたことを確認してください。

  • 最初にエクスポートを試み(特にcore.extension.yml)、次に再度インポートしてください。
  • UI(/admin/config/development/configuration)からSynchronizeを試してください。

Drupalコンソール

別の方法として、 config importDrupal Console を使用してみてください。時々、それは何が問題なのかについてより多くの手がかりを与える可能性があります。例えば。

drupal config:import

または 単一のアイテム またはファイル(--file)の場合は、次を試してください。

drupal config:import:single
1
kenorb

本当の原因:

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を作成すると、これらの開発モジュールは本番サイトでは有効になりません。

0
ssibal

最新のコードで設定をチェックアウトし、drush crを実行します。

その後、構成をローカルにインポートします。

drush cim -y
0
Vishal Nigam