我目前正在尝试将我的应用程序推送到 Heroku。我已经能够部署它几次,但现在我已经在我的 packages.json 文件中将 mongoose 从 ">= 3.5.0" 更新为 ">= 3.6.0rc0" 。但是,3.6 版需要 mpath 和 mpromise。
当 slug 编译开始时,它使用缓存版本的猫鼬或其他东西,当我的应用程序启动时,我得到“错误:找不到模块'mpath'”。
我试图设置一个自定义 buildpack Git 来停止缓存,我只是在 bin/compile 中注释掉了缓存内容,可在此处获得:https ://github.com/jValdron/heroku-buildpack-nodejs
这是推送的输出:http: //pastebin.com/L3Yqy2NR
此外,当我从 package.json 中删除一些依赖项时,如果我使用“heroku run bash”登录,我可以看到那些在 node_modules 中删除的依赖项。我已经尝试删除 node_modules 文件夹并执行另一个“git push”,但也没有用。而那些被移除的 deps 仍然在 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 不存在。