无法在 heroku 上推送 node.js 应用程序

Posted

技术标签:

【中文标题】无法在 heroku 上推送 node.js 应用程序【英文标题】:unable to push node.js app on heroku 【发布时间】:2017-01-31 07:52:30 【问题描述】:

我尝试在 heroku 上推送我的 node.js 应用程序,但是。无法检测到此应用的默认语言。我什至尝试过 heroku buildpacks:set heroku/nodejs。但是还是推不开。

 Counting objects: 31, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (24/24), done.
    Writing objects: 100% (31/31), 5.37 KiB | 0 bytes/s, done.
    Total 31 (delta 3), reused 0 (delta 0)
    remote: Compressing source files... done.
    remote: Building source:
    remote: 
    remote:  !     No default language could be detected for this app.
    remote:             HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
    remote:             See https://devcenter.heroku.com/articles/buildpacks
    remote: 
    remote:  !     Push failed
    remote: Verifying deploy...
    remote: 
    remote: !   Push rejected to radiant-cliffs-91678.
    remote: 
    To https://git.heroku.com/radiant-cliffs-91678.git
     ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to 'https://git.heroku.com/radiant-cliffs-91678.git'

【问题讨论】:

【参考方案1】:

根据您的日志,Heroku 似乎无法检测到您应用的语言。

对于 Node.js,您需要在项目的根目录中创建一个 package.json 文件(使用 npm init 之类的东西),或者您可以在项目的根目录中创建一个 Procfile 来指定您的语言:

web: node index.js

【讨论】:

我有 package.json 和 Procfile 这两个文件都在你项目的根目录下吗? 另外,您是否将项目的主分支推送到提交这些文件的位置? 我有 2 个 angular 和 backend 文件夹,我的 package.json 和 procfile 都在 backend 文件夹中 @AnkitKumar 啊,这就是为什么。 Heroku 只在最顶层的文件夹中查找。您需要在根目录中拥有 Procfile。然后在 Procfile 中将其指向 web: node backend/index.js 或任何起始文件的相对路径。【参考方案2】:

转到命令行并运行以下命令:

heroku buildpacks:set -a app_name heroku/node

【讨论】:

以上是关于无法在 heroku 上推送 node.js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 构建失败 - 推送被拒绝,无法编译 node.js 应用程序,无法缩小包,许多错误

Node.js 应用程序无法在 heroku 上启动

如何在 heroku 上远程调试 node.js 应用程序?

在 Heroku 上使用 Node 读取、写入和存储 JSON

Node.js Heroku 应用程序上的 TCP 连接

无法在 heroku 上使用 node.js 连接到 mongolab