2012-11-10 3 views
11

へのNode.jsアプリケーションをデプロイするために、明らかに非常に基本的な何か:https://devcenter.heroku.com/articles/nodejs失敗私はHerokuのに簡単なのNode.js Expressベースのアプリケーションを展開しようとしていますHerokuの

ここでは私のpackage.jsonです:

私は私のpackage.jsonでなく、無駄に様々なバージョンを微調整しようとした

-----> 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' 

{ 
    "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" 
    } 
} 

はいつgit push heroku master私は、次のトレースを得ました。私はWindows上で開発しており、このENOENTの問題はファイルモードの問題が原因である可能性があります。

+0

もう一度お試しください。 npmリポジトリは、あなたがローカル環境から実行するときでさえ、時にはこれらのエラーをスローします。 – almypal

+1

私は何度も試してみましたので、私は質問しました。再試行します... – insitu

答えて

16

私はこれで固定しまっ:

  • 必ずProcfileを作るには、gitの

  • (gitのRM -r node_modules /)

  • node_modules /フォルダを削除すると、gitのにそのコミットにコミットしています

その後、私はgit push heroku masterを実行してエラーが消えました。

+5

これは私のために固定し、node_modules /を.gitignoreに追加しました –

+1

+1にArbie、+1に@WindUpToy – CjCoax

+0

これは私のために働いた。私も "npm install -g express-generator"を実行し、 "express"を実行しなければなりませんでした。 package.jsonファイルを作成するために –

9

私はこの問題を持っていた、そしてのでそれがあった:私は私の.gitignoreファイルでbin

npmchmod express/bin/expressにしようとしていた

  • バージョン管理にnode_modulesを保つが、

    1. 私の.gitignoreのため、このファイルはgitにはないので、デプロイ中にクローンされていないので、失敗しました。ローカルのnpmインストールでは通常どおりbin/expressファイルが作成されるため、気付かなかった。

      bin.gitignoreから削除し、不足しているファイルをコミットすることで問題が解決しました。

  • +1

    私にとっては、gitignoreに* node_modules *があったということでした。 – Henrik

    3

    Herokuチームの場合、デフォルトでnpm install --no-bin-links --productionを使用するようにnpmを設定するか、ユーザーがそのフラグを設定できるように環境変数を作成することを検討してください。これはノードのインストールで深刻なバグです。私の.gitignoreからbinディレクトリを削除すると、私は展開が可能になりましたが、クロスプラットフォーム開発環境でgitを効果的に使用すると、node_modulesが変更された可能性のあるgit pullごとに明示的なnpm再構築が必要になります。

    NPMのベストプラクティスは、.gitignore(http://www.futurealoof.com/posts/nodemodules-in-git.htmlを参照)にnode_modulesを持たないようにすることです。

    --no-bin-linksは、binディレクトリが除外されているノードモジュールの展開を可能にし、npm rebuildをサポートしますが、ビンリンクが作成されたときには失敗しないと考えています。 https://github.com/heroku/heroku-buildpack-nodejs/pull/33

    ありがとう:

    は、私がここにプル要求を提出しました!

    +0

    --no-bin-linksは本当に役に立ちますか?私はbin_folderを除いてgitにnode_modulesをチェックインして実験していますが、ローカルでも同じ問題に遭遇しています(最終的にはbeanstalkにデプロイしたい) –

    0

    gruntfile.jsの名前をGruntfileに変更して同様の問題を修正しました。js

    関連する問題