Symptome:
Einige Drush-Befehle schlagen fehl. Einige Drupal-Seiten sind leer.
Die fehlgeschlagenen drush-Befehle melden "Segmentierungsfehler: 11".
Das Apache-Protokoll (z. B. php-error.log in MAMP) zeigt ebenfalls den gleichen Fehler.
Hintergrund:
Wenn Sie einen gulp- oder grunt-Workflow verwenden, um die SASS-Datei Ihres Themas usw. zu kompilieren, kann es vorkommen, dass Drush-Befehle wie Apache einen Segmentierungsfehler 11 auslösen, während Drupal-Seiten als Leerzeichen (WSDs) bereitgestellt werden.
Wahrscheinliche Ursache
Dies liegt daran, dass Dateien aus Ihrer grunt
oder der gulp
Workflow-Umgebung in node_modules
beispielsweise von Drupal selbst fälschlicherweise als Nebenprodukt registriert werden drush cache-clear all
. Es gibt Dutzende dieser .js-Dateien, und Drupal kann sie nicht verarbeiten. Möglicherweise handelt es sich um eine PCRE-Regex, die die Hauptursache ist, da diese an anderer Stelle bekannt ist. Sowieso ...
Das passiert nicht immer
Es ist nicht klar, ob einige Module (wie z. B. Browser Sync) diesen Fehler auslösen, da der Workflow im Stil von node.j (dh gulp oder grunt) einwandfrei funktionieren kann, bevor dies fehlschlägt.
drush cc all
), was die Verwirrung noch verstärkte.Antworten:
Hier ist die Lösung, die Sie suchen. Viel eleganter und weniger Arbeit:
Nur eine kleine Änderung an der obigen Antwort von @ iamcarico.
Hinweis: Möglicherweise benötigen Sie eine .npmrc-Datei mit dem folgenden Inhalt:
quelle
Also, ich habe eine etwas elegantere Lösung, die einfach die .info-Dateien nach der Installation von npm entfernt. Es werden keine benötigt, dies sollte also sicher sein.
Fügen Sie am Ende Ihrer package.json Folgendes hinzu:
quelle
Das funktioniert bei mir:
(Mit vielen Dank an @jorgegc für die Identifizierung der Ursache in diesem Thread bei dachte ich, dass das Thema hier einen allgemeineren Titel verdient.)
gulpfile.js
undpackage.json
in das neue "versteckte" Verzeichnis.npm
cd .npm
undnpm install
(nachdem das Hauptverzeichnis des Themas gelöscht wurdenode_modules
)gulpfile.js
Basisverzeichnis für Quell- und Zieldatei bearbeiten paths.eg Im Textausschnitt wurden Pfaden "../" vorangestelltgulp
Befehl aus dem.npm
Verzeichnis heraus aufBeispielverzeichnisstruktur für ihit theme
. ├── .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
Leiter von gulpfile.js
// project-specific var project = { path: { sass: { source: '../assets/sass/**/*.scss', css_dest: '../css' }, // sass . . .
quelle
Sie können all dies vermeiden, indem Sie Ihre Workflow-Tools im Stammverzeichnis der Drupal-Site installieren. Es wird kein
node_modules
Ordner der obersten Ebene gescannt.Die Installation auf Root-Ebene bietet auch andere Vorteile, z. B. die Möglichkeit, Ihr gesamtes Projekt auf einheitliche Weise zu verknüpfen (Ihre benutzerdefinierten Module, Features und Designs können diese Konfiguration auf Root-Ebene gemeinsam nutzen). Vorausgesetzt, Sie gruppieren sich
sites/all/modules
incontrib
undcustom
Unterverzeichnisse, können Sie Contrib- und andere Anbieterordner problemlos ignorieren.quelle
Es scheint immer noch ein Problem zu sein und ich habe auch den folgenden Fehler bekommen:
Segmentation fault: 11
Nach dem Laufennpm install
.Ich benutze
gulp
Version3.8.11
undnode
mit der Version0.12
.Ich benutze normalerweise (auch in diesem Fall)
aurora
als Basisthema und benutze ein eigenespackage.json
und einegulp.js
Datei. Meinepackage.json
Datei enthält das Postinstall-Skript von iamcarrico:Hmm, zu diesem Zeitpunkt habe ich gerade erkannt, dass das Postinstall-Skript etwas anders ist, was möglicherweise meinen Segmentierungsfehler verursacht hat. Sowieso.
Ich habe das
node_modules
Verzeichnis in meinem Theme mit entferntrm -rf ./node_modules
. Leeren Sie den Cache mit Drushdrush cc all
. Dann folgte ich den obigen Anweisungen von iainh ... bis nein. 3 (3 nicht im Lieferumfang enthalten), läuftfind node_modules -type f -name '*.info' | xargs rm;
in den.npm
Ordnern und bewegte dasgulp.js
,package.json
und dienode_modules
Ordner einer Ebene bis zum ursprünglichen Thema Ordnern. Ich konntegulp
ohne Segmentierungsfehler laufen undbrowsersync
arbeitete sogar wie erwartet.quelle
Hier ist das Problem auf drupal.org, das dieses Problem behebt, einschließlich des Patches https://www.drupal.org/node/2329453
quelle
Meine Lösung bestand in der Vergangenheit darin, das Node-Material in einen versteckten Ordner wie z. B. ".npm" zu verschieben.
quelle