不包含node_modules文件夹时出错500

时间:2012-10-16 01:43:49

标签: git node.js heroku

最后更新

似乎我的一个依赖项(还不是1.0)在两个版本之间更改了它的API。我的本地版本已经过时,当推送到Heroku时,Heroku下载了最新版本,API更改导致我的应用程序崩溃。

结论:当使用不稳定的库(未达到1.0)时,请坚持使用特定版本。

谢谢你们帮助我。

=================

使用Node 0.8.latest,表达3.latest。

我的一条路线在本地完美运行,但在部署应用程序时给出了500错误。错误消息非常特定于应用程序,但不合逻辑。这是一个TypeError,告诉我某些东西(应该被定义)是未定义的。为了使它工作,我找到的唯一奇怪的解决方案是从.gitignore中删除node_modules并在git下跟踪它。推送到heroku时,不会出现任何错误,并且网址正常工作

当你知道我没有更改node_modules文件夹中的任何代码时,它开始变得奇怪。我还通过将本地npm ls与推送到heroku时生成的模块列表进行比较来比较本地和“heroku”安装的依赖项,因为它重建了依赖项,因为它们是.gitignore'd。我看到invalidnpm 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,0.0.5在heroku上。其余的是严格相同的。

另一件需要注意的是,错误堆栈跟踪指向一个模块,该模块在两个环境中具有相同的版本,并且不依赖于也不依赖于具有不同版本的模块。因此,即使是次要的依赖性差异也不应成为问题的原因。

但是,我看不出问题出在哪里,我想避免跟踪我的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"
  }
}

1 个答案:

答案 0 :(得分:0)

以下是 Heroku

中的工作示例package.json
{
    "name": "MyApp"
    , "version": "0.0.1"
    , "dependencies": {
          "express": "3.x.x"
    }
    , "devDependencies": {
        "mocha": "*"
        , "should": "*"
        , "supervisor": "*"
        , "superagent": "*"
        , "request": "*"
    }
    , "engines": {
        "node": "0.8.x"
        , "npm": "1.1.x"
    }
}