Sintomas:
Alguns comandos drush falham; Algumas páginas do Drupal estão em branco.
Os comandos de drush com falha relatam "Falha na segmentação: 11"
O log do Apache (por exemplo, php-error.log no MAMP) também mostra o mesmo erro.
Fundo:
Se você usar um fluxo de trabalho gulp ou grunhido - para compilar o SASS do seu tema etc. -, poderá encontrar um problema em que os comandos drush geram uma falha de segmentação 11, assim como o Apache, enquanto servem as páginas do Drupal como espaços em branco (WSDs).
Causa provável
Isso ocorre porque os arquivos do seu ambiente grunt
ou do gulp
fluxo de trabalho node_modules
estão sendo erroneamente registrados pelo próprio Drupal como um subproduto, drush cache-clear all
por exemplo. Existem dezenas desses arquivos .js e o Drupal não pode lidar com eles ... é possivelmente um regex PCRE que é a causa raiz, pois isso é conhecido em outros lugares. De qualquer forma ...
Isso nem sempre acontece
Não está claro se alguns módulos (como o Browser Sync, por exemplo) induzem esse erro como um fluxo de trabalho no estilo node.js (por exemplo, gulp ou grunt) pode funcionar perfeitamente antes de falhar dessa maneira.
drush cc all
), aumentando a confusão.Respostas:
Aqui está a solução que você está procurando. Muito mais elegante e menos trabalho:
Apenas uma ligeira alteração na resposta de @ iamcarico acima.
nota: você pode precisar de um .npmrc com apenas o seguinte conteúdo:
fonte
Portanto, tenho uma solução um pouco mais elegante, que removerá os arquivos .info após a instalação do npm. Nenhum é necessário, portanto isso deve ser seguro.
Adicione o seguinte ao final do seu package.json:
fonte
Isso funciona para mim:
(Com muitos agradecimentos a @jorgegc por identificar a causa neste tópico , achei que o tópico merecia um título mais geral aqui.)
gulpfile.js
epackage.json
para o novo diretório "oculto".npm
cd .npm
enpm install
(depois de excluir onode_modules
diretório de nível raiz do tema, é claro)gulpfile.js
diretório base para os arquivos de origem e destino paths.eg No fragmento abaixo, "../" foram anexados aos caminhosgulp
comando de dentro do.npm
diretórioExemplo de estrutura de diretório para o tema 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
Chefe do gulpfile.js
// project-specific var project = { path: { sass: { source: '../assets/sass/**/*.scss', css_dest: '../css' }, // sass . . .
fonte
Você pode evitar tudo isso instalando suas ferramentas de fluxo de trabalho na raiz do site Drupal. Não digitalizará uma
node_modules
pasta de nível superior .A instalação no nível raiz também tem outros benefícios, como permitir que você lintue todo o seu projeto de maneira uniforme (seus módulos, recursos e temas personalizados podem compartilhar essa configuração no nível raiz). Desde que você grupo
sites/all/modules
emcontrib
ecustom
subdiretórios, você pode facilmente ignorar contrib e outras pastas de fornecedores.fonte
Ainda parece ser um problema e também recebi o seguinte erro:
Segmentation fault: 11
após a execuçãonpm install
.Eu uso a
gulp
versão3.8.11
enode
com a versão0.12
.Eu normalmente (também neste caso) uso
aurora
como tema base e uso um arquivopackage.json
e um própriogulp.js
. Meupackage.json
arquivo contém o script pós-instalação de iamcarrico :Hmm, neste ponto, acabei de reconhecer que o script pós-instalação é um pouco diferente, o que pode ter causado meu erro de falha de segmentação. De qualquer forma.
O que fiz foi remover o
node_modules
diretório dentro do meu temarm -rf ./node_modules
. Limpou o cache com drushdrush cc all
. Então eu segui as instruções acima de iainh ... até não. 3 (3 não incluído), correufind node_modules -type f -name '*.info' | xargs rm;
dentro da.npm
pasta e mudou agulp.js
,package.json
eanode_modules
pasta um nível acima para a pasta tema original. Eu poderia executargulp
sem erros de segmentação e atébrowsersync
funcionou como esperado.fonte
Aqui está o problema no drupal.org que soluciona esse problema, incluindo o patch https://www.drupal.org/node/2329453
fonte
minha solução era mover o material do nó para dentro de uma pasta oculta como ".npm", por exemplo.
fonte