13

シンプルなnode.jsエクスプレスベースのアプリケーションをherokuにデプロイしようとしていますが、これは明らかに非常に基本的なものです: https://devcenter.heroku.com/articles/nodejs

これが私の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"
  }
}

git push heroku master次のトレースを取得したとき:

 -----> 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!     <npm-@googlegroups.com>

        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 git@heroku.com:fast-everglades-2007.git
  ! [remote rejected] master -> master (pre-receive hook declined)
 error: failed to push some refs to 'git@heroku.com:fast-everglades-2007.git'

package.json でさまざまなバージョンを微調整しようとしましたが、役に立ちませんでした。私は Windows で開発していますが、この ENOENT の問題はファイルモードの問題が原因である可能性があります。

4

5 に答える 5

4

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

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

--no-bin-linksbin ディレクトリが除外された node_modules のデプロイを有効にし、npm の再構築をサポートしますが、bin リンクが作成されたときに失敗することはありません。

ここにプル リクエストを送信しました: https://github.com/heroku/heroku-buildpack-nodejs/pull/33

ありがとう!

于 2013-03-21T22:31:38.393 に答える
0

同様の問題は、gruntfile.js の名前を Gruntfile.js に変更することで修正されました。

于 2014-09-10T11:20:12.410 に答える