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

IT技术 javascript node.js git heroku
2021-03-13 01:47:53

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

主文件夹中的每个子文件夹本身都是一个节点项目,package.jsonnode_modules. 问题是当我尝试将一个这样的文件夹(todo-api)中的节点应用程序推送到 heroku 时,我收到以下错误 -

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'

这是项目的目录结构 -

在此处输入图片说明

我决定自己将todo-api子文件夹重构为一个新项目,这次推送到 Heroku 工作得很好 -

在此处输入图片说明

我不明白为什么会出现“无默认语言”错误,尤其是当两个地方的节点应用程序完全相同时。有什么想法吗?

6个回答

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

这是节点 buildpack 的命令
如您所见,它要求 apackage.json位于应用程序的根目录,而不是位于子文件夹中。

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

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

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

@RobinWieruch - 只需git init在子文件夹中进行即可。
2021-04-24 01:47:53
你能详细说明一下After the backend project was pushed to GitHub as separate project吗?您是否为后端创建了单独的存储库?
2021-05-01 01:47:53
是的,我为后端创建了一个单独的存储库。
2021-05-02 01:47:53

在我的情况下,我有待处理的文件需要提交到 github :)

我以为它只是我的 package.json 只包含“{}”,但这是因为我的 package.json 没有提交。谢谢!
2021-05-13 01:47:53

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

我收到了同样的消息

      No default language could be detected for this app.

部署时我在与 master 不同的分支上。这就是它不起作用的原因。

切换到主

我将分支更改为 master 并且它起作用了。

不要忘记在 package.json 的脚本中放入 "start" : "node app.js"

否则你会得到 H10 代码错误。

H10 错误

该应用程序然后工作。

在此处输入图片说明