Heroku:"此应用程序无法检测到默认语言"节点应用程序抛出的错误

时间:2017-04-12 06:34:09

标签: javascript node.js git heroku

我正在学习NodeJS,我跟随的课程有几个项目,按部分排列。我将所有项目都放在一个主文件夹下,也就是git repository

主文件夹中的每个子文件夹都是一个节点项目,在package.json中包含node_modules和相关的依赖项。问题是当我尝试将节点应用程序推送到heroku时,我得到以下错误 -

todo-api

这是项目的目录结构 -

enter image description here

我决定将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 agile-forest-32749. remote: To https://git.heroku.com/agile-forest-32749.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/agile-forest-32749.git' 子文件夹单独重构为一个新项目,这次推向Heroku工作得很好 -

enter image description here

我不明白为什么我会得到"没有默认语言"错误,特别是当两个地方的节点应用程序完全相同时。有什么想法吗?

9 个答案:

答案 0 :(得分:3)

Heroku有一组默认的buildpack,在需要检测应用语言时使用 为了执行该检测,它运行每个默认构建包的bin/detect命令,直到其中一个返回0退出代码。

This is the command for the node buildpack
如您所见,它需要package.json位于您应用的根目录,而不是位于子文件夹中。

这是导致构建失败的区别。您需要将您的应用程序放在git存储库的根目录下。

答案 1 :(得分:1)

就我而言,我没有在根文件夹中设置Heroku,因为我的GitHub存储库被分为 frontend / backend / 文件夹。他们每个人都有一个 package.json 。由于Heroku在存储库的根文件夹中需要 package.json 文件,因此它无法检测语言。

就我而言,我必须在 backend / 文件夹中初始化辅助GitHub存储库。在将后端项目作为单独的项目推送到GitHub后,git push heroku master开始工作。

答案 2 :(得分:1)

我收到相同的消息

!无法为此应用检测到默认语言。

部署时,我与master不在同一分支。这就是为什么它不起作用。

enter image description here

我将分支更改为master并成功。

别忘了在package.json脚本中添加“ start”:“ node app.js”

否则,您将得到H10代码错误。 enter image description here

该应用程序随后开始运行。 enter image description here

答案 3 :(得分:1)

您需要为项目设置一种语言。在不使用终端的情况下,转到Heroku项目。点击设置,向下滚动Build Backbacks并添加一种语言(nodejs等)。

答案 4 :(得分:1)

就我而言,我的项目根目录中有 2 个子文件夹

  • 客户
  • 服务器

所以我想将服务器文件夹部署到 Heroku,而不是将服务器内容移动到项目的根目录(又是忙碌的工作),我使用下面的代码来解决这个问题

在项目的根目录中执行此操作

git subtree push --prefix sub-folder heroku master
ex:- git push --prefix server heroku master

这对我有用。

快乐编码。

答案 5 :(得分:0)

就我而言,我有待处理的文件需要提交到github:)

答案 6 :(得分:0)

我遇到了同样的问题,通过将包括 pub get 在内的服务器端文件放在根文件夹中来修复它,然后工作。

答案 7 :(得分:0)

这可能是因为您的 package.json 和 package-lock.json 文件在根目录中,并且您有两个单独的客户端和服务器文件夹。

将这些文件移动到服务器文件夹中并尝试“git push heroku master”

应该可以的

答案 8 :(得分:-1)

您应该正确制作您的requirements.txt 文件。 我收到此错误是因为我使用了 (pip freeze > requirements.txt) 命令来创建文件。 但它应该是 pip freeze > requirements.txt 没有任何空格。