node.js heroku Ghost由于缺少依赖项而无法启动:找不到模块

时间:2015-10-06 20:22:53

标签: node.js heroku ghost

我已经在这工作了几个小时,没有运气。我刚刚将Ghost 0.7.0下载到我的本地计算机上,开箱即用,npm start完美无缺。我尝试安装第一个软件包时遇到错误。我正在安装的软件包是ghost-s3-storage。但是,在部署到heroku时,所有程序包都返回类似的错误。

以下是我的步骤......

$ npm start
    -> works
$ npm install --save ghost-s3-storage
$ npm start
    -> still works

所以现在我的package.json包含准确的依赖关系,因此Heroku应该正确部署,但事实并非如此。它似乎是由Heroku运行的三个命令引起的(根据他们的guide)。当我在本地运行命令时,我可以复制错误。

 $ rm -rf node_modules
 $ npm install --quiet --production
 $ npm start
   -> ERROR: Ghost is unable to start due to missing dependencies:
    Cannot find module 'ghost-s3-storage'

此时,我的package.json看起来是正确的。

package.json
  "dependencies": {
    ...,
    "ghost-s3-storage": "^0.2.2",
    ...,
  }

但是ghost-s3-storage中缺少node_modules

$ npm ls
   -> UNMET DEPENDENCY ghost-s3-storage@^0.2.2
   -> npm ERR! missing: ghost-s3-storage@^0.2.2, required by ghost@0.7.0

所以我很难过。 Heroku是愚蠢的,还是node.js,还是我。请帮忙。

2 个答案:

答案 0 :(得分:2)

我有完全相同的问题,我使用npm shrinkwrap解决了这个问题。

npm shrinkwrap锁定了包依赖项(https://docs.npmjs.com/cli/shrinkwrap

另见此建议: https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git

答案 1 :(得分:1)

我也有同样的问题,可以报告运行npm shrinkwrap,提交和部署到Heroku解决了这个问题。