我正在学习NodeJS,我正在学习的课程有几个项目,按部分排列.我有一个主文件夹下的所有项目,也是一个git repository.
主文件夹中的每个子文件夹都是一个节点项目,在node_modules中包含package.json和相关的依赖项.问题是当我试图将节点应用程序推送到一个这样的文件夹(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工作得很好 –
我不明白为什么我会得到“无默认语言”错误,特别是当两个地方的节点应用程序完全相同时.有什么想法吗?
最佳答案
Heroku有一组默认的构建包,在需要检测应用程序语言时使用.
为了进行该检测,它运行每个默认构建包的bin / detect命令,直到其中一个返回0退出代码.
为了进行该检测,它运行每个默认构建包的bin / detect命令,直到其中一个返回0退出代码.
This is the command for the node buildpack.
如您所见,它需要将package.json放在应用程序的根目录中,而不是位于子文件夹中.
这是导致构建失败的差异.您需要将您的应用程序放在git存储库的根目录下.