我正在学习NodeJS,我跟随的课程有几个项目,按部分排列。我将所有项目都放在一个主文件夹下,也就是git repository。
主文件夹中的每个子文件夹都是一个节点项目,在package.json
中包含node_modules
和相关的依赖项。问题是当我尝试将节点应用程序推送到heroku时,我得到以下错误 -
todo-api
这是项目的目录结构 -
我决定将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工作得很好 -
我不明白为什么我会得到"没有默认语言"错误,特别是当两个地方的节点应用程序完全相同时。有什么想法吗?
答案 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不在同一分支。这就是为什么它不起作用。
我将分支更改为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 没有任何空格。