最后更新
似乎我的一个依赖项,还不是 1.0,在 2 个版本之间更改了它的 API。我的本地版本已经过时,当推送到 Heroku 时,Heroku 下载了最新版本,API 更改导致我的应用程序崩溃。
结论:当使用尚未稳定的库(未达到 1.0)时,请坚持使用特定版本。
谢谢你们试图帮助我。
==================
使用 Node 0.8.latest,表达 3.latest。
我的一条路线在本地完美运行,但在部署应用程序时给了我 500 错误。错误消息非常特定于应用程序,但不合逻辑。这是一个 TypeError,告诉我某些东西(应该定义的)是未定义的。为了让它工作,我发现的唯一奇怪的解决方案是node_modules
从 .gitignore 中删除并在 git 下跟踪它。在heroku上推送时,不会出现错误,并且网址正常工作
当您知道我没有更改 node_modules 文件夹中的任何代码时,它开始变得奇怪。我还通过将本地与推送到 heroku 时生成的模块列表进行比较来比较本地和“heroku”安装的依赖npm ls
项,因为它会重建依赖项,因为它们是.gitignore
'd。我看到一些invalid
用npm ls
. 这个包都不在我的package.json
文件中,它们是我的包的依赖项package.json
。即,connect
本地为 2.4.4,heroku 上为 2.5.0,send
本地为 0.0.4,heroku 上为 0.1.0,emitter-compnonent
本地为 0.0.1,heroku 上为 0.0.5。其余部分完全相同。
需要注意的另一件事是错误堆栈跟踪指向一个模块,该模块在两个环境中具有相同的版本,并且不依赖或不依赖于具有不同版本的模块。因此,即使是微小的依赖差异也不应该是问题的原因。
但是,我看不出问题出在哪里,我想避免跟踪我的node_modules
文件。还是我应该?
更新
根据 Hector Correa 的要求,这是我的 package.json 文件
{
"name": "myapp",
"version": "0.1.0",
"dependencies": {
"express": "3.0.x",
"mongoose": "3.0.x",
"superagent": "0.9.x",
"oauth": "0.9.x",
"querystring": "0.1.x",
"consolidate": "~0.4.0",
"mustache": "~0.6.0",
"singly": "*",
"underscore": "~1.4.1"
},
"devDependencies": {
"mocha": "1.4.x",
"supertest": "0.1.x"
},
"engines": {
"node": "0.8.x",
"npm": "1.1.x"
}
}