推送拒绝,无法编译Node.js应用程序heroku

时间:2013-09-06 14:44:22

标签: git node.js heroku

当我尝试使用git push heroku master将我的nodejs应用程序推送到heroku时,我得到了这个:

Counting objects: 975, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (862/862), done.
Writing objects: 100% (975/975), 3.74 MiB | 80.00 KiB/s, done.
Total 975 (delta 70), reused 0 (delta 0)

-----> Node.js app detected
-----> Resolving engine versions
   Using Node.js version: 0.10.15
   Using npm version: 1.3.3
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
   npm ERR! install Couldn't read dependencies
!     Push rejected, failed to compile Node.js app

To git@heroku.com:hidden-reaches-9268.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:hidden-reaches-9268.git'

这是我的package.json:

{
  "name": "fnBoard",
  "version": "0.0.1",
  "private": true,
  "scripts": {
  "start": "node server.js"
},

  "dependencies": {
   "socket.io": "0.9.x"
},
   "engines": {
     "node": "0.10.x",
     "npm": "1.3.x"
   }
}

里面有一堆错误,我不知道为什么会这样。请帮忙。 -Thanks

8 个答案:

答案 0 :(得分:10)

使这项工作最简单的方法是将node_modules添加到.gitignore。这里有更多信息:Fail to deploy node.js application to heroku

答案 1 :(得分:9)

我正在 ReactJS 工作,我正在尝试在 Heroku 服务器上部署我的项目。那时我发现了同样的错误:

  

推送被拒绝,无法编译Node.js应用程序。

enter image description here

解决方案是:

如果你使用纱线:

  

git rm yarn.lock

     

git push heroku master

如果您使用npm:

  

git rm package-lock.json

     

git push heroku master

答案 2 :(得分:4)

添加node_modules可能很简单,但这里不是正确的方法。而是执行git push -f heroku master以强制推送您的更新,告诉heroku覆盖任何预先存在的node_modules。这样你的git repo就不会陷入节点libs。

答案 3 :(得分:0)

尝试在您的package.json中设置一个heroku-postbuild脚本,并确保包括您的引擎。

"scripts": {
        "heroku-postbuild": "npm run build"
    },
"engines": {
        "npm": "5.6.0",
        "node": "8.10.0"
      }

我将尝试避免不惜一切代价强行推送任何东西,无论是到github还是heroku。

答案 4 :(得分:0)

我解决了这个问题。
我遇到了同样的错误:

  

“推送被拒绝,无法编译Node.js应用”

但我的日志抱怨此未知选项:

'--target'

我在 package.json 上解决了这个问题,并在下面找到了以下代码行:

"postinstall": "ng build --aot --target=production"

我删除了--target=production

在我的终端上:
我再次提交了$ git commit -m 'anything here'
然后$ git push heroku master
然后我解决了。

答案 5 :(得分:0)

我有同样的问题,问题出在git add上。我忘了添加node_modules文件。我关闭了终端,并再次运行了Heroku和NodeJs入门[1]中给出的命令集。该应用程序已成功推入堆栈。

答案 6 :(得分:0)

问题 当您使用Yarn安装节点模块时,它将生成一个yarn.lock文件,其中包含运行命令时已安装的确切模块的列表。如果package.json中的依赖关系发生了变化,但是Yarn可执行文件未生成新的yarn.lock文件,我们将使构建失败,以防止可能会在运行时影响应用程序的细微错误和安全问题。

分辨率 当您的应用程序使用Yarn但其他工具修改了package.json文件而不调用yarn安装时,通常会发生此问题。例如,使用npm而不是Yarn安装新模块,或手动手动更新版本要求。

要解决此问题,请运行yarn install并签入更新的yarn.lock文件。

确保您已删除package.lock文件并在推送之前提交了相同的文件。

答案 7 :(得分:0)

我通过join将其修复为不属于Node的导入模块的路径。更多信息在这里 https://stackoverflow.com/a/64772154/12982656