1

npm install -d を実行し、git heroku push master を使用してすべてのものをプッシュします。私のherokuログでは、次のように表示されます:

2012-05-01T00:21:37+00:00 heroku[web.1]: Starting process with command `node app.js`
2012-05-01T00:21:39+00:00 app[web.1]: 
2012-05-01T00:21:39+00:00 app[web.1]: node.js:201
2012-05-01T00:21:39+00:00 app[web.1]:               ^
2012-05-01T00:21:39+00:00 app[web.1]: Error: Cannot find module 'mkdirp'
2012-05-01T00:21:39+00:00 app[web.1]:     at Function._load (module.js:279:25)
2012-05-01T00:21:39+00:00 app[web.1]:     at Module.require (module.js:354:17)
2012-05-01T00:21:39+00:00 app[web.1]:         throw e; // process.nextTick error, or 'error' event on first tick
2012-05-01T00:21:39+00:00 app[web.1]:     at Function._resolveFilename (module.js:332:11)
2012-05-01T00:21:39+00:00 app[web.1]:     at require (module.js:370:17)
2012-05-01T00:21:39+00:00 app[web.1]:     at Object.<anonymous> (/app/node_modules/stylus/lib/middleware.js:16:14)
2012-05-01T00:21:39+00:00 app[web.1]:     at Module._compile (module.js:441:26)
2012-05-01T00:21:39+00:00 app[web.1]:     at Object..js (module.js:459:10)
2012-05-01T00:21:39+00:00 app[web.1]:     at Module.load (module.js:348:31)
2012-05-01T00:21:39+00:00 app[web.1]:     at Function._load (module.js:308:12)
2012-05-01T00:21:39+00:00 app[web.1]:     at Module.require (module.js:354:17)
2012-05-01T00:21:40+00:00 heroku[web.1]: Process exited with status 1
2012-05-01T00:21:40+00:00 heroku[web.1]: State changed from starting to crashed

明らかに、ローカルに展開する場合、この問題はありません。アプリケーションの node_modules 内にある jade モジュール内に mkdirp モジュールがあります。

私はProcfileも持っています:

web: node app.js

これが私のpackage.jsonです:

{
    "name": "gemini"
  , "version": "0.0.1"
  , "contributors": [ 
      { "name": "****", "email": "****" }
    ]
  , "private": true
  , "engines": { "node": ">= 0.2.0" }
  , "dependencies": {
      "express": "2.5.1"
    , "stylus": ">= 0.17.0"
    , "jade": "0.3.0"
  }
}

誰でもアドバイスできますか?ありがとう!

4

2 に答える 2

1

npm install mkdirp を実行してからプッシュして修正しました。

ただし、mkdirp が見つからず、インストールしたばかりのものにデフォルト設定されているという警告が表示されます。おそらく、ジェイドとスタイラスの両方の node_modules 内に mkdirp があることを知っているからでしょうか?

いずれにせよ、アプリは現在デプロイされています。

于 2012-05-01T23:25:58.633 に答える
0

エラーを確認すると、ジェイドとは関係ありません。スタイラスと関係があります。Stylusが古いバージョンを参照しているという問題が原因である可能性がありますが、を使用する>=と最新バージョンが取得されるはずです。

Herokuプッシュは、Herokuによって依存関係として検出され、インストールされているモジュールを一覧表示する必要があります。

参照しているJadeのバージョンは非常に古く、現在のバージョンは0.25.0です。0.3.0を使用している場所。

私はそのバージョンを調べました、そしてこれはpackage.json内容です:

{
  "name": "jade",
  "description": "Jade template engine",
  "version": "0.3.0",
  "author": "TJ Holowaychuk <tj@vision-media.ca>",
  "main": "./lib/jade.js",
  "bin": { "jade": "./bin/jade" },
  "engines": { "node": ">= 0.1.98" }
}

mkdirpが依存関係であることを指定していないことに気付くでしょうが、それが必要な可能性があります(私はソースを掘り下げませんでした)。

HerokuでJade0.25.0を正常に実行しましたが、それより古いバージョンを試したことはありません。

于 2012-05-01T00:54:07.873 に答える