2016-07-29 39 views
19

我git克隆了一個Node.js應用程序(在package.json中指定的版本是4.1.2,本地機器的版本是6.2.2),並試圖在Heroku上推送。但它未能建立,給了這個錯誤:爲什麼Heroku無法檢測到Node.js buildpack?

Failed to detect set buildpack https<span>:</span>//codon-buildpacks.s3.amazonaws&period;com/buildpacks/heroku/nodejs.tgz 

現在我的buildpack設置的Heroku /的NodeJS,我得到這個消息:當我運行git push heroku master

Buildpack set. Next release on lit-badlands-92088 will use heroku/nodejs. 
Run git push heroku master to create a new release using this buildpack. 

現在,我再次叮囑:

remote: -----> Failed to detect set buildpack https<span>: 
</span>//codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz 

remote: More info: 
https://devcenter.heroku.com/articles/buildpacks#detection-failure 

remote: 
remote: !  Push failed 
remote: Verifying deploy... 
remote: 
remote: !  Push rejected to lit-badlands-92088. 

即使設置了Node.js構建包,也不會檢測到可能的原因是什麼?

回答

25

這意味着package.json文件沒有被檢入到你的git項目的根目錄,所以Heroku檢測到它不是Node.js應用程序。您可以在本地看到:

git show master:package.json 

要解決這個問題,你要確保沒有在你的項目的根目錄中的package.json(其中也有一個.git目錄),並將其添加git:

git add package.json 
git commit -m 'track package.json' 

可以改善措詞('未檢測到set buildpack')。它可能應該說'未能檢測到Node.js應用程序'。當buildpack的「檢測」腳本運行時(https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect),它會查找package.json文件來驗證是否有可用的節點應用程序可以構建。

+0

我有同樣的問題,並在我的回購package.json存在。你知道什麼可能是這個錯誤的另一個原因? – katie

+1

因此,package.json需要在.git文件夾中?在我的根目錄中,我有.git和一個名爲node的文件夾,並且在節點文件夾中,我有index.js和package.json。 – Shree

+1

這是因爲package.json位於子目錄而不是git倉庫的根目錄?我應該嘗試將package.json移動到根目錄嗎? – Shree

3

我有類似的問題,這裏是解決問題的步驟。

heroku buildpacks:set heroku/nodejs 
git push heroku master 

基本上細節的更多信息鏈接 - 如果你刪除或重命名以前導致您的應用程序類型的自動檢測文件


也可能會出現這種情況,因此自動在應用程序上設置檢測到的buildpack。


+0

仍然不工作,我可以做的任何其他事情? – swateek

7

這是因爲Heroku認爲你正在部署一個Node應用程序。但是您正在部署的是Node應用程序的public目錄,而不是節點代碼。

Heroku使用buildpack來選擇ap的處理方式。要清除該節點關聯關係:

buildpacks:clear # clear all buildpacks set on the app

這意味着,「下一個發佈版本檢測buildpack正常。」,應該爲您解決。

REF:https://devcenter.heroku.com/articles/buildpacks

+0

'heroku buildpack:清除'解決了我的問題。謝謝。 – eabates

1

上其他的答案一些微小的澄清: 錯誤 「不能檢測設置buildpack HTTPS://codon-buildpacks.s3.amazonaws. COM/buildpacks/heroku上/ nodejs.tgz」 或任何類似的東西,意味着你試圖推送給heroku的GIT COMMIT沒有被檢測爲node.js應用程序。 (注意細節的細節)。

我最近犯了一個愚蠢的錯誤,讓我意識到這一點:運行「ls -a」顯示我的package.json和.git文件與heroku所需的位於同一根目錄中。除了我的最新git提交中沒有包含package.json文件。運行「git status」提醒我package.json是一個未跟蹤的文件。所以我補充說,ta-da,推動heroku工作。

如果您遇到與buildpack相關的錯誤,請檢查您的GIT COMMIT在根目錄中是否有package.json文件。如果是這樣,請嘗試使用「heroku buildpacks:set heroku/nodejs」(或您所需的語言)手動指定構建包。這應該可以解決與構建包檢測相關的大多數錯誤。

+0

你是男人!救了我! –

1

如果您在分支上工作,你需要設置主來跟蹤你的分支

git branch -f --track master origin/branch_name

檢查的package.json在主

git show master:package.json

如果它是可用的,試着再次推。

git push heroku master

`

0

大多數應用程序都存在這些特徵中的至少一個,所以如果你看到這個錯誤,這通常意味着一個重要的文件是不簽入您的Git倉庫:

  • 的Java:pom.xml的

  • 紅寶石:Gemfile中

  • 的Node.js:的package.json

  • 的Python:requirements.txt/setup.py/Pipfile

  • PHP:composer.json/index.php的

你應該:

git add {file} 
git commit -am 'added {file} 
git push heroku master 
相關問題