一部のDrushコマンドは失敗します。一部のDrupalページが空白です。
失敗したdrushコマンドは「セグメンテーション違反:11」を報告します
Apacheログ(MAMPのphp-error.logなど)でも同じエラーが表示されます。
Gulpまたはgruntワークフローを使用する場合-テーマのSASSなどをコンパイルする場合-Drupalページを空白(WSD)として提供しているときに、drushコマンドがApacheと同様にセグメンテーション違反11をスローする問題に遭遇する可能性があります。
これは、node_modules
のgrunt
またはgulp
ワークフロー環境のファイルが、_Drupal自体によって、たとえばdrush cache-clear all
の副産物として誤って登録されているためです。これらの.jsファイルは数十あり、Drupalはそれらを処理できません...これは他の場所で知られているように、根本的な原因はPCRE正規表現である可能性があります。とにかく...
一部のモジュール(ブラウザ同期など)がこのエラーを引き起こすかどうかは明らかではありません。この方法で失敗する前に、node.jsスタイル(gulpまたはgruntなど)のワークフローが完全に機能するためです。
ここにあなたが探しているソリューションがあります。はるかにエレガントで少ない作業:
"scripts": {
"postinstall": "find node_modules/ -name '*.info' -type f -delete"
}
上記の@iamcaricoの回答を少し変更しただけです。
注:以下の内容だけの.npmrcが必要になる場合があります。
unsafe-perm = true
だから、私は少しエレガントな解決策を持っています、それはnpmのインストール後に.infoファイルを削除するだけです。何も必要ないので、これShouldは安全です。
以下をpackage.jsonの最後に追加します。
"scripts": {
"postinstall": "find node_modules/ -name \"*.info\" -type f -delete"
}
これは私にとってはうまくいきます:
(d.oの this thread で原因を特定してくれた@jorgegcに感謝します。ここでは、トピックがより一般的なタイトルに値すると思いました。)
gulpfile.js
とpackage.json
を新しい「非表示」ディレクトリ.npm
に移動しますcd .npm
およびnpm install
(もちろん、テーマのルートレベルnode_modules
ディレクトリを削除した後)gulpfile.js
ベースディレクトリを編集します。スニペットでは、「../」がパスの前に付加されていました.npm
ディレクトリ内からgulp
コマンドを呼び出します. ├── .editorconfig ├── .git │ ├── HEAD │ ├── ... ├── .gitignore ├── .jshintrc ├── .npm │ ├── gulpfile.js │ ├── node_modules │ └── package.json ├── assets │ ├── images │ ├── js │ └── sass ├── css │ ├── ihit.hacks.css │ └── ihit.styles.css ├── ihit.info ├── ihit.sublime-project ├── ihit.sublime-workspace ├── images │ ├── logo.png │ ├── search-icon.png │ └── Sprite.png ├── js │ └── ihit.behaviors.js ├── php │ ├── ihit_breadcrumb.inc │ ├── ihit_form_search_form_alter.inc │ ├── ihit_menu_link.inc │ ├── ihit_menu_tree.inc │ ├── ihit_preprocess_html.inc │ ├── ihit_preprocess_region.inc │ └── ihit_process_page.inc ├── research │ └── Refills ├── screenshot.png ├── template.php └── templates ├── html.tpl.php ├── node--image_gallery.tpl.php ├── node.tpl.php └── page.tpl.php
// project-specific var project = { path: { sass: { source: '../assets/sass/**/*.scss', css_dest: '../css' }, // sass . . .
Drupalサイトのルートにワークフローツールをインストールすることで、これらすべてを回避できます。トップレベルのスキャンは行われませんnode_modules
フォルダ。
ルートレベルでのインストールには、プロジェクト全体を均一な方法でリントできるなど、他の利点もあります(カスタムモジュール、機能、テーマでこのルートレベルの構成を共有できます)。あなたがグループを提供した場合sites/all/modules
をcontrib
およびcustom
サブディレクトリに入れると、contribおよび他のベンダーのフォルダーを簡単に無視できます。
それでも問題があるようで、次のエラーも発生しました:Segmentation fault: 11
を実行した後にnpm install
。
gulp
バージョン3.8.11
とnode
をバージョン0.12
で使用しています。
私は通常(この場合も)aurora
を基本テーマとして使用し、独自のpackage.json
およびgulp.js
ファイルを使用します。私のpackage.json
ファイルには iamcarrico's ポストインストールスクリプトが含まれています:
"scripts": {
"postinstall": "find node_modules -type f -name '*.info' | xargs rm;"
}
うーん、この時点で、postinstallスクリプトがわずかに異なることを認識しました。これにより、セグメンテーションフォールトエラーが発生した可能性があります。とにかく。
私がしたことは、node_modules
を使用してテーマ内のrm -rf ./node_modules
ディレクトリを削除することでした。 drush drush cc all
でキャッシュをクリアしました。次に、上記の iainh ...の指示に従っていました。 3(3は含まれません)、find node_modules -type f -name '*.info' | xargs rm;
フォルダー内で.npm
を実行し、gulp.js
、package.json
およびnode_modules
フォルダーを元のテーマまで1レベル移動しましたフォルダ。セグメンテーションエラーなしでgulp
を実行でき、browsersync
も期待どおりに機能しました。
パッチ https://www.drupal.org/node/232945 を含め、この問題に対処するdrupal.orgの問題を次に示します。