Objawy:
Niektóre polecenia drush zawodzą; Niektóre strony Drupal są puste.
Nieudane polecenia drush zgłaszają „Błąd segmentacji: 11”
Dziennik Apache (np. Php-error.log w MAMP) również pokazuje ten sam błąd.
Tło:
Jeśli używasz przepływu pracy przełykania lub chrząkania - w celu skompilowania SASS motywu itp. - możesz napotkać problem polegający na tym, że polecenia drush generują błąd segmentacji 11, podobnie jak Apache, podczas serwowania stron Drupal jako spacji (WSD).
Prawdopodobna przyczyna
Wynika to z faktu, że pliki ze środowiska użytkownika grunt
lub gulp
przepływu pracy node_modules
są błędnie rejestrowane przez sam Drupal jako drush cache-clear all
na przykład produkt podwójny . Istnieją dziesiątki tych plików .js, a Drupal nie może ich obsłużyć ... prawdopodobnie jest to wyrażenie regularne PCRE, które jest główną przyczyną, ponieważ jest to znane gdzie indziej. Tak czy inaczej ...
To nie zawsze się zdarza
Nie jest jasne, czy niektóre moduły (na przykład Browser Sync) indukują ten błąd, ponieważ przepływ pracy w stylu node.js (tj. Przełykanie lub chrząkanie) może działać idealnie, zanim zawiedzie w ten sposób.
drush cc all
), Co dodatkowo pogmatwało nas .Odpowiedzi:
Oto rozwiązanie, którego szukasz. Znacznie bardziej elegancki i mniej pracy:
Drobna zmiana powyższej odpowiedzi @ iamcarico.
Uwaga: może być potrzebny plik .npmrc z następującą treścią:
źródło
Mam więc nieco bardziej eleganckie rozwiązanie, które po prostu usunie pliki .info po instalacji npm. Żadne nie są potrzebne, więc powinno to być bezpieczne.
Dodaj następujący kod na końcu pliku package.json:
źródło
To działa dla mnie:
(Z podziękowaniami dla @jorgegc za zidentyfikowanie przyczyny w tym wątku, czy myślałem, że temat zasługuje na bardziej ogólny tytuł tutaj.)
gulpfile.js
i przejdźpackage.json
do nowego „ukrytego” katalogu.npm
cd .npm
inpm install
(po usunięciu katalogu głównego poziomu motywunode_modules
oczywiście)gulpfile.js
katalog podstawowy ścieżek do pliku źródłowego i docelowego. eg We fragmencie poniżej „../” zostały dodane do ścieżekgulp
polecenie z.npm
kataloguPrzykładowa struktura katalogów dla tematu ihit
. ├── .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
Szef gulpfile.js
// project-specific var project = { path: { sass: { source: '../assets/sass/**/*.scss', css_dest: '../css' }, // sass . . .
źródło
Możesz tego wszystkiego uniknąć, instalując narzędzia przepływu pracy w katalogu głównym witryny Drupal. Nie skanuje
node_modules
folderu najwyższego poziomu .Instalowanie na poziomie katalogu głównego ma również inne zalety, takie jak pozwalanie na ciągnięcie całego projektu w jednolity sposób (niestandardowe moduły, funkcje i motywy mogą współdzielić tę konfigurację na poziomie katalogu głównego). Pod warunkiem, że grupujesz
sites/all/modules
w podkatalogachcontrib
icustom
możesz łatwo zignorować foldery contrib i innych dostawców.źródło
Nadal wydaje się to stanowić problem i dostałem również następujący błąd:
Segmentation fault: 11
po uruchomieniunpm install
.używam
gulp
wersji3.8.11
inode
wersji0.12
.Zwykle (także w tym przypadku) używam
aurora
jako motywu podstawowego i używam własnegopackage.json
igulp.js
pliku. Mójpackage.json
plik zawiera skrypt poinstalacyjny iamcarrico :Hmm, w tym momencie właśnie zauważyłem, że skrypt poinstalacyjny jest nieco inny, co mogło spowodować mój błąd błędu segmentacji. Tak czy inaczej.
To, co zrobiłem, to usunięcie
node_modules
katalogu z moim motywemrm -rf ./node_modules
. Wyczyściłem pamięć podręczną drushemdrush cc all
. Potem postępowałem zgodnie z powyższymi instrukcjami iainh ... aż nie. 3 (3 nie dołączone), uruchomił sięfind node_modules -type f -name '*.info' | xargs rm;
w.npm
folderze i przeniósłgulp.js
,package.json
anode_modules
folder o jeden poziom wyżej do oryginalnego folderu motywu. Mogłem działaćgulp
bez błędów segmentacji, a nawetbrowsersync
działałem zgodnie z oczekiwaniami.źródło
Oto problem na drupal.org, który rozwiązuje ten problem, w tym łatka https://www.drupal.org/node/2329453
źródło
moim rozwiązaniem było w przeszłości przeniesienie elementów węzła do ukrytego folderu, na przykład „.npm”.
źródło