Как предотвратить Drupal, повышающий ошибку сегментации при использовании рабочего процесса Node.js?

Симптомы:

Некоторые команды drush не работают; Некоторые страницы Drupal пусты.
Неисправные команды drush сообщают «Ошибка сегментации: 11»
Журнал Apache (например, php-error.log в MAMP) также показывает ту же ошибку.

Фон:

Если вы используете рабочий процесс gulp или grunt - для компиляции SASS вашей темы и т. д. - вы можете столкнуться с проблемой, когда команды drush вызывают ошибку сегментации 11, а также Apache, показывая страницы Drupal как пробелы (WSD).

Вероятная причина

Это связано с тем, что файлы из вашей рабочей среды grunt или gulp в node_modules ошибочно регистрируются самим Drupal как би-продукт drush cache-clear all например. Есть десятки этих файлов .js, и Drupal не может их обработать ... возможно, это регулярное выражение PCRE, которое является основной причиной, поскольку это известно в другом месте. В любом случае ...

Это не всегда бывает

Неясно, могут ли некоторые модули (например, Browser Sync) вызвать эту ошибку, поскольку рабочий процесс node.js (т. е. gulp или grunt) может работать отлично, прежде чем провалиться таким образом.

32 голоса | спросил iainH 16 PM00000080000001431 2014, 20:24:14

7 ответов


24

Вот решение, которое вы ищете. Гораздо более элегантная и меньшая работа:

"scripts": {
  "postinstall": "find node_modules /-name '* .info' -type f -delete"
}

Просто небольшое изменение в ответе @ iamcarico выше.

Примечание: вам может потребоваться .npmrc с только следующим контентом:

unsafe-perm = true
ответил Ryan McVeigh 15 62014vEurope/Moscow11bEurope/MoscowSat, 15 Nov 2014 00:36:42 +0300 2014, 00:36:42
7

Итак, у меня есть немного более элегантное решение, которое просто удалит файлы .info после установки npm. Нет необходимости, поэтому этот должен быть в безопасности.

Добавьте в конец пакета package.json следующее:

"scripts": {
  "postinstall": "find node_modules /-name \" *. info \ "-type f -delete"
}
ответил iamcarrico 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 19 Sep 2014 04:37:02 +0400 2014, 04:37:02
5

Это работает для меня:

(Огромное спасибо @jorgegc за то, что он определил причину в этой ветке , я думал, что тема заслуживает более общего названия здесь.)

  1. Переместите gulpfile.js и package.json в новый «скрытый» каталог .npm
  2.   
  3. cd .npm и npm install (после того, как, конечно, удалил тему корневого уровня node_modules)
  4.   
  5. изменить gulpfile.js базовый каталог для исходного и целевого файлов paths.e.g. В фрагменте снизу «../» были добавлены пути.
  6.   
  7. , в свою очередь, вызовите команду gulp из каталога .npm

Пример структуры каталогов для темы ihit

, â "œâ" € â € € .editorconfig â "â" â € â € € .git â ",  â" â "€ € HEAD â ",  â" œâ € "â €" ... â "â" â € â € € .gitignore â "â" â € â € € .jshintrc â "œ" "â €". â ",  â" œâ € "g € gulpfile.js â ",  â" â "â € â € € node_modules â "," â "" "" "€" package.json активы "â €" â ", Â" â "â € â € € â ",  â" â "â € â € ¢ js â ",  â" "" "" " â "œ" "€ css â ", Â" â "â" â € â € "ihit.hacks.css â ", Â" "" "" "" ihit.styles.css â "â" â € â € € ihit.info â "â" â € â € € ihit.sublime-project â "œâ" € â € € ihit.sublime-workspace «Изображение» â ",  â" â "â € â € € 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 исследование "â €" â ",  â" "" "€" "€ Вкладыши â "â" â € â € € screenshot.png Шаблон.php Шаблоны «Шаблоны»     â "œâ €" € html.tpl.php     узел â € œâ € € â € - image_gallery.tpl.php     â € œâ € € â € € node.tpl.php     «â» «â» € â € € page.tpl.php

Глава gulpfile.js

//конкретный проект var project = {   дорожка: {     sass: {         источник: '../assets/sass/**/*.scss',         css_dest: '../css'     }, //sass   ,   ,   ,

ответил iainH 16 PM00000080000001431 2014, 20:24:14
3

Вы можете избежать всего этого, установив инструменты рабочего процесса в корень сайта Drupal. Он не сканирует папку верхнего уровня node_modules.

Установка на корневом уровне также имеет другие преимущества, например, позволяя вам объединить весь проект в едином стиле (ваши пользовательские модули, функции и темы могут совместно использовать эту конфигурацию на уровне корневого уровня). Если вы группируете sites /all /modules в подкаталоги contrib и custom, вы можете легко игнорировать папки Contrib и других поставщиков.

ответил Chris Ruppel 20 J0000006Europe/Moscow 2015, 17:17:44
1

Это все еще кажется проблемой, и я также получил следующую ошибку: Ошибка сегментации: 11 после запуска npm install.

Я использую gulp version 3.8.11 и node с версией 0.12.

Я обычно (в этом случае тоже) использую aurora как базовую тему и использую собственный файл package.json и gulp.js. Мой файл package.json содержит скрипт postinstall iamcarrico :

"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 на один уровень до исходной папки темы. Я мог запустить gulp без ошибок сегментации и даже browsersync работал как ожидалось.

ответил 4aficiona2 20 FebruaryEurope/MoscowbFri, 20 Feb 2015 03:00:02 +0300000000amFri, 20 Feb 2015 03:00:02 +030015 2015, 03:00:02
1

Вот проблема на drupal.org, которая решает эту проблему, включая патч https://www.drupal.org/node/2329453

ответил askibinski 30 12015vEurope/Moscow11bEurope/MoscowMon, 30 Nov 2015 15:36:33 +0300 2015, 15:36:33
-1

Мое решение было в прошлом перемещать содержимое узла внутри скрытой папки, например, «.npm».

ответил Jehu 18 MarpmFri, 18 Mar 2016 17:41:24 +03002016-03-18T17:41:24+03:0005 2016, 17:41:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132