2017-07-23 66 views
0

我想部署一個web應用程序的Heroku,但不斷收到此錯誤:如何讓heroku檢測nodejs buildpack?

`-----> Failed to detect app matching https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz buildpack` 

這裏是一個簡化的外觀我的應用程序文件結構:

myProject 
|__server 
    |__server.js 
|__react_component_1 
|__react_componet_2 
|__styles</p> 

的Express服務器是server.js在服務器目錄中,它將通往我的應用的入口路徑。

好像這個問題已經被問了很多次之前,我讀過所有的答案,這是我曾嘗試:

我從根文件夾,myProject的,其中沒有一個包部署.json文件。我已經嘗試npm init來設置package.json,因此heroku可以將應用程序檢測爲nodejs。我也確保package.json正在被git跟蹤。我製作了一個Procfile:web: cd server && npm run start。我已經在cli中運行這個命令來設置buildpack:heroku buildpacks:set heroku/nodejs,但到目前爲止它還沒有工作。在設置好所有東西之後,我也嘗試了buildpacks:clear,看看如果我有一個package.json,heroku可以自動檢測buildpack。

任何幫助表示讚賞,謝謝。

+0

輸入'heroku logs -n 300'顯示最近300行的日誌輸出結果後,請在終端輸出顯示內容。有什麼可能會給出明確的原因是什麼導致問題 –

+0

由於某種原因,我不允許編輯我的評論。想說「粘貼」輸出,而不是過去 –

回答

0

根據Heroku的相關documentation on Node.js buildpacks

The Heroku Node.js buildpack is employed when the application has a package.json file in the root directory.

根據您Procfile內容,web: cd server && npm run start,看起來像你的init的服務器目錄,而不是根目錄內NPM跑。

我想如果你將package.jsonnode_modules文件夾的一個目錄下移到根目錄,那麼buildpack問題將得到解決。只要確保將您的Procfile更改爲web: npm run start,因爲它現在是相同的目錄。

+0

嗨帕特,謝謝你的答案 - 服務器文件夾和兩個反應組件文件夾都有自己的package.json,當我搭建項目時運行npm init,但是沒有在根文件夾(myProject)中運行npm init。但是,當我遇到這個問題時,我確實運行了npm init。只是在發佈後等待答案的時候,我將服務器文件夾的內容移到了根文件夾(myProject)中,當我嘗試部署時,我收到了相同的消息。 –

+0

** continue **然後我恢復了所有內容,cd到根文件夾中,刪除了我的heroku應用程序,再次運行'heroku create',看看它是否是我的項目結構問題,是同樣的問題。我希望提供更多信息。再一次感謝你。 –

+0

爲什麼兩個反應組件文件夾都有自己的package.json? –

相關問題