1

現在、アプリを Heroku にプッシュしようとしています。すでに数回デプロイできましたが、packages.json ファイルで mongoose を ">= 3.5.0" から ">= 3.6.0rc0" に更新しました。ただし、バージョン 3.6 には mpath と mpromise が必要です。

slug のコンパイルが始まると、キャッシュされたバージョンの mongoose などを使用します。アプリケーションを起動すると、「エラー: モジュール 'mpath' が見つかりません」というメッセージが表示されます。

キャッシュを停止するカスタム ビルドパック Git をセットアップしようとしました。bin/compile のキャッシュをコメント アウトしたところです

プッシュの出力は次のとおりです: http://pastebin.com/L3Yqy2NR

また、package.json からいくつかの依存関係を削除したときに、「heroku run bash」でログインすると、node_modules の依存関係が削除されたことがわかります。node_modules フォルダーを削除して、別の 'git push' を実行しようとしましたが、どちらも機能しませんでした。そして、削除された dep はまだ node_modules にあります。

誰でもこれを修正する方法について考えがありますか?

編集:

ここに私のpackage.jsonファイルがあります:

{
    "name": "souply-api",
    "version": "0.1.0",
    "author": "Jason Valdron <jason.valdron@orangesprocket.com>",
    "description": "Main gears that runs the Soup.ly application",
    "dependencies": {
        "bcrypt": ">= 0.7.3",
        "express": ">= 3.0.5",
        "extend": ">= 1.1.3",
        "imagemagick": ">= 0.1.3",
        "jade": ">= 0.27.7",
        "knox": ">= 0.4.6", 
        "less": ">= 1.3.1",
        "less-middleware": ">= 0.1.9",
        "moment": ">= 1.7.2",
        "mongoose": ">= 3.6.0rc0", 
        "mongoose-types": ">= 1.0.3",
        "node-native-zip": ">= 1.1.0",
        "nodemailer": ">= 0.3.37",
        "oauth2orize": ">= 0.1.0",
        "passport": ">= 0.1.15",
        "passport-local": ">= 0.1.6",
        "passport-google": ">= 0.2.0",
        "passport-facebook": ">= 0.1.4",
        "passport-twitter": ">= 0.1.4",
        "passport-http": ">= 0.2.1",
        "passport-http-bearer": ">= 0.2.0",
        "passport-oauth2-client-password": ">= 0.1.0",
        "poor-form": ">= 1.1.3",
        "request": ">= 2.12.0",
        "socket.io": ">= 0.9.13"
    },
    "engines": {
        "node": "0.8.x",
        "npm": "1.1.x"
    }
}

前述のとおり、Mongoose は 3.6.0rc に設定されています。Mpath は、Mongoose の package.json ファイルの依存関係です。ローカルの mongoose package.json ファイルを見ると、次のように表示されます。

"dependencies": {
    "hooks": "0.2.1"
  , "mongodb": "1.2.11"
  , "ms": "0.1.0"
  , "sliced": "0.0.3"
  , "muri": "0.3.0"
  , "mpromise": "0.2.0"
  , "mpath": "0.1.1"
}

また、でログインしてheroku run bashに移動するnode_modules/mongoose/node_modulesと、mpath と mpromise が存在しないことがわかります。

4

5 に答える 5

5

node_modules は Git リポジトリにありました。レポから削除することで、正常に機能しました。

于 2013-02-08T13:49:30.033 に答える
3

heroku が node_modules のキャッシュの無効化をサポートするようになりました: https://devcenter.heroku.com/articles/nodejs-support#cache-behavior

Heroku は、ビルド間で保持されるキャッシュ ディレクトリを維持します。このキャッシュは、npm、yarn、および bower のキャッシュを格納するために使用されます。必要に応じて、Node.js アプリのすべてのキャッシュを無効にすることができます。

heroku config:set NODE_MODULES_CACHE=false git commit -am 'disable node_modules cache' --allow-empty git push heroku master

于 2017-02-21T17:10:50.043 に答える
0

使用している最新バージョンの mongoose になるように package.json を更新する必要があります。

package.json にも mpath を追加する必要があります (mongoose エントリの前に)。

package.json ファイルを投稿できますか?

于 2013-02-08T02:44:02.787 に答える