web-dev-qa-db-ja.com

Heroku:ノードアプリに対して「このアプリのデフォルトの言語を検出できませんでした」というエラーがスローされる

私はNodeJSを学習しています。私がフォローしているコースには、セクションごとに整理されたいくつかのプロジェクトがあります。すべてのプロジェクトが1つのメインフォルダーの下にあります。これも gitリポジトリ です。

メインフォルダー内のこれらの各サブフォルダーは、それ自体がノードプロジェクトであり、package.jsonおよびnode_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'

これはプロジェクトのディレクトリ構造です-

enter image description here

私はtodo-apiサブフォルダーをそれ自体で新しいプロジェクトにリファクタリングすることを決めました、そして今回はPush to Herokuがうまく機能します-

enter image description here

特にノードアプリが両方の場所でまったく同じである場合に、「no default language」エラーが発生する理由がわかりません。何かご意見は?

12
Manish Giri

Herokuには一連のデフォルトのビルドパックがあり、アプリの言語を検出する必要がある場合に使用されます。
その検出を行うために、それらのいずれかが0の終了コードを返すまで、これらのデフォルトのビルドパックのそれぞれのbin/detectコマンドを実行します。

これはノードビルドパックのコマンドです
ご覧のとおり、package.jsonは、サブフォルダーではなくアプリのルートに配置する必要があります。

これが、ビルドが失敗する原因となる違いです。アプリをgitリポジトリのルートに配置する必要があります。

2
Damien MATHIEU

私の場合、GitHubリポジトリがfrontend /およびbackend /フォルダーに分割されていたため、ルートフォルダーにHerokuを設定していませんでした。それぞれにpackage.jsonがありました。 Herokuはリポジトリのルートフォルダーにpackage.jsonファイルを必要とするため、言語を検出できません。

私の場合、backend /フォルダーのセカンダリGitHubリポジトリを初期化する必要がありました。バックエンドプロジェクトが個別のプロジェクトとしてGitHubにプッシュされた後、git Push heroku master機能しました。

1
Robin Wieruch

同じメッセージを受け取った

!このアプリのデフォルトの言語を検出できませんでした。

デプロイするときに、マスターとは別のブランチにいました。それがうまくいかなかった理由です。

ここに画像の説明を入力

私はブランチをマスターに変更し、うまくいきました。

Package.jsonのスクリプトに "start": "node app.js"を含めることを忘れないでください

そうしないと、H10コードエラーが発生します。 ここに画像の説明を入力

その後、アプリは機能しました。 ここに画像の説明を入力

0
Walter Clayton