2012-11-10 19 views
11

próbuję wdrożyć proste node.js wyrazić oparte wniosek do Heroku, coś, co jest pozornie bardzo proste: https://devcenter.heroku.com/articles/nodejsFail wdrożyć node.js aplikacji Heroku

Tu jest moja package.json:

{ 
    "name": "cours-lic3-blois", 
    "version": "0.0.1", 
    "private": true, 
    "scripts": { 
    "start": "node app" 
    }, 
    "dependencies": { 
    "express": "*", 
    "ejs": "*", 
    "github-flavored-markdown": "*", 
    "less-middleware": "*" 
    }, 
    "engines": { 
    "node": "0.8.8", 
    "npm": "1.1.65" 
    } 
} 

Kiedy git push heroku master mam następujący ślad:

-----> Heroku receiving push 
-----> Node.js app detected 
-----> Resolving engine versions 
     Using Node.js version: 0.8.8 
     Using npm version: 1.1.65 
-----> Fetching Node.js binaries 
-----> Vendoring node into slug 
-----> Installing dependencies with npm 
     npm ERR! Error: ENOENT, chmod '/tmp/build_1suuxlhd9s8n6/node_modules/express/bin/express' 
     npm ERR! If you need help, you may report this log at: 
     npm ERR!  <http://github.com/isaacs/npm/issues> 
     npm ERR! or email it to: 
     npm ERR!  <[email protected]> 

     npm ERR! System Linux 2.6.32-348-ec2 
     npm ERR! command "/tmp/node-node-tonf/bin/node" "/tmp/node-npm-NG88/cli.js" "rebuild" 
     npm ERR! cwd /tmp/build_1suuxlhd9s8n6 
     npm ERR! node -v v0.8.8 
     npm ERR! npm -v 1.1.65 
     npm ERR! path /tmp/build_1suuxlhd9s8n6/node_modules/express/bin/express 
     npm ERR! code ENOENT 
     npm ERR! errno 34 
     npm ERR! 
     npm ERR! Additional logging details can be found in: 
     npm ERR!  /tmp/build_1suuxlhd9s8n6/npm-debug.log 
     npm ERR! not ok code 0 
    !  Failed to rebuild dependencies with npm 
    !  Heroku push rejected, failed to compile Node.js app 

To [email protected]:fast-everglades-2007.git 
    ! [remote rejected] master -> master (pre-receive hook declined) 
error: failed to push some refs to '[email protected]:fast-everglades-2007.git' 

starałem się dostosować różne wersje w moim package.json ale bezskutecznie. Zajmuję się w systemie Windows i może być możliwe, że ten problem ENOENT jest ze względu na problem z filemode.

+0

Spróbuj ponownie. Repozytorium npm zgłasza te błędy czasem nawet po uruchomieniu z lokalnego środowiska. – almypal

+1

Próbowałem kilka razy z rzędu, dlatego zadałem to pytanie. Spróbuję ponownie ... – insitu

Odpowiedz

16

mam to naprawić przez:

  • Making pewny Procfile jest zaangażowana w git

  • Zdejmowanie node_modules/folder i zobowiązanie, że do git (git rm -r node_modules /)

Potem zrobiłem git push heroku master, a błąd zniknął.

+5

Naprawiłem to dla mnie i dodałem node_modules/to .gitignore –

+1

+1 do Arbie, +1 do @WindUpToy – CjCoax

+0

To zadziałało dla mnie. Musiałem również uruchomić "npm install -g express-generator" i uruchomić "express". w celu utworzenia pliku package.json –

9

miałem ten problem, a to dlatego, że:

  1. Trzymam node_modules w kontroli wersji
  2. miałem bin w moim pliku .gitignore

npm usiłował chmod express/bin/express, ale z powodu mojego .gitignore ten plik nie był w git i dlatego nie został sklonowany podczas wdrażania, więc nie powiodło się. Nie zauważyłem tego, ponieważ lokalna instalacja npm utworzyłaby plik bin/express jak zwykle.

Usunięcie bin z .gitignore i popełnienie brakujących plików rozwiązało problem dla mnie.

+1

Dla mnie było to, że miałem * node_modules * w .gitignore. – Henrik

3

Zespół Heroku, czy mógłbyś rozważyć skonfigurowanie npm do domyślnego użycia npm install --no-bin-links --production lub stworzenie zmiennej środowiskowej, aby umożliwić użytkownikom ustawienie tej flagi. Jest to poważny błąd w instalacjach węzła. Usunięcie katalogu bin z mojego pliku .gitignore (zgodnie z sugestią poniżej) umożliwiło mi wdrożenie, ale zepsuje się przy użyciu git w efektywnym środowisku programistycznym obejmującym wiele platform, co wymaga wyraźnego przebudowania npm przy każdym wywołaniu git, gdzie zmieniono node_modules.

Najlepszą praktyką NPM jest unikanie modułu node_modules w .gitignore (patrz http://www.futurealoof.com/posts/nodemodules-in-git.html).

Wierzę, że --no-bin-links zapewni najlepsze z obu światów, umożliwiając wdrażanie modułów node_mulules, w których katalog bin został wykluczony, wspierając przebudowę npm, ale nie zawodzi, gdy zostanie utworzony link bin.

I złożyła wniosek Pociągnąć tutaj: https://github.com/heroku/heroku-buildpack-nodejs/pull/33

Dzięki!

+0

Czy --no-bin-links naprawdę pomaga? Eksperymentuję z sprawdzaniem modułu node_modules w git (z wyjątkiem folderów bin) i uruchamiam ten sam problem nawet lokalnie (ostatecznie chcę wdrożyć do beanstalk) –

0

podobny problem został rozwiązany przez zmianę nazwy pliku gruntfile.js na Gruntfile.js

Powiązane problemy