Certaines commandes drush échouent; Certaines pages Drupal sont vides.
Les commandes d'échec du drush indiquent "Erreur de segmentation: 11"
Le journal Apache (par exemple php-error.log dans MAMP) affiche également la même erreur.
Si vous utilisez un flux de travail gulp ou grunt - pour compiler le SASS de votre thème, etc. - vous pouvez rencontrer un problème où les commandes drush jettent une erreur de segmentation 11 comme Apache tout en servant Drupal pages en tant que blancs ( WSD).
En effet, les fichiers de votre environnement de workflow grunt
ou gulp
dans node_modules
sont enregistrés par erreur par Drupal lui-même comme un sous-produit de drush cache-clear all
par exemple. Il existe des dizaines de ces fichiers .js et Drupal ne peut pas les gérer ... c'est peut-être un regex PCRE qui est la cause principale comme cela est connu ailleurs. Quoi qu'il en soit ...
Il n'est pas clair si certains modules (comme Browser Sync par exemple) provoquent cette erreur car un flux de travail de style node.js (c'est-à-dire gulp ou grunt) peut fonctionner parfaitement avant d'échouer de cette manière.
Voici la solution que vous recherchez. Beaucoup plus élégant et moins de travail:
"scripts": {
"postinstall": "find node_modules/ -name '*.info' -type f -delete"
}
Juste une légère modification sur la réponse de @ iamcarico ci-dessus.
remarque: vous aurez peut-être besoin d'un fichier .npmrc avec uniquement le contenu suivant:
unsafe-perm = true
J'ai donc une solution un peu plus élégante, qui supprimera simplement les fichiers .info après l'installation de npm. Aucun n'est nécessaire, donc cela Devrait être sûr.
Ajoutez ce qui suit à la fin de votre package.json:
"scripts": {
"postinstall": "find node_modules/ -name \"*.info\" -type f -delete"
}
Cela fonctionne pour moi:
(Merci beaucoup à @jorgegc d'avoir identifié la cause dans ce fil à d.o. Je pensais que le sujet méritait un titre plus général ici.)
gulpfile.js
et package.json
vers le nouveau répertoire "caché" .npm
cd .npm
et npm install
(après avoir supprimé le niveau racine du thème node_modules
répertoire bien sûr)gulpfile.js
répertoire de base pour les fichiers source et de destination paths.e.g. Dans l'extrait ci-dessous, "../" ont été ajoutés aux cheminsgulp
depuis .npm
répertoire. ├── .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 . . .
Vous pouvez éviter tout cela en installant vos outils de workflow à la racine du site Drupal. Il n'analysera pas un niveau supérieur node_modules
dossier.
L'installation au niveau racine a également d'autres avantages, comme vous permettre de peloter l'ensemble de votre projet de manière uniforme (vos modules, fonctionnalités et thèmes personnalisés peuvent partager cette configuration au niveau racine). Pourvu que vous groupiez sites/all/modules
dans les sous-répertoires contrib
et custom
, vous pouvez facilement ignorer contrib et d'autres dossiers de fournisseurs.
Cela semble toujours être un problème et j'ai également eu l'erreur suivante: Segmentation fault: 11
après avoir exécuté npm install
.
J'utilise gulp
version 3.8.11
et node
avec la version 0.12
.
J'utilise habituellement (dans ce cas également) aurora
comme thème de base et j'utilise un _ package.json
et gulp.js
fichier. Ma package.json
le fichier contient iamcarrico script de post-installation:
"scripts": {
"postinstall": "find node_modules -type f -name '*.info' | xargs rm;"
}
Hmm, à ce stade, je viens de reconnaître que le script de post-installation est légèrement différent, ce qui pourrait avoir causé mon erreur de segmentation. En tous cas.
Ce que j'ai fait, c'est que j'ai supprimé le node_modules
répertoire dans mon thème avec rm -rf ./node_modules
. Vider le cache avec drush drush cc all
. Ensuite, j'ai suivi les instructions ci-dessus de iainh ... jusqu'à ce que non. 3 (3 non inclus), a fonctionné find node_modules -type f -name '*.info' | xargs rm;
à l'intérieur de .npm
dossier et déplacé le gulp.js
, package.json
et le node_modules
dossier d'un niveau jusqu'au dossier du thème d'origine. J'ai pu exécuter gulp
sans erreurs de segmentation et même browsersync
a fonctionné comme prévu.
Voici le problème sur drupal.org qui résout ce problème, y compris le correctif https://www.drupal.org/node/232945