簡體   English   中英

將Node.js應用程序部署到Heroku

[英]Deploy nodejs application to Heroku

我有一個存儲庫的克隆https://github.com/ibnclaudius/express-mongoose-es6-rest-api ,我想部署到Heroku。 在部署中,指令編寫如下:

# compile to ES5
1. npm run build or gulp

# upload dist/ to your server
2. scp -rp dist/ user@dest:/path

# install production dependencies only
3. npm i --production

# Use any process manager to start your services
4. pm2 start dist/index.js

在生產中,您需要確保服務器始終處於開機狀態,因此理想情況下,應使用此處建議的任何流程管理器。 我們建議pm2,因為它具有一些有用的功能,例如可以將其配置為在重新引導系統時自動啟動服務。

我不確定如何進行。 如何在Heroku的背景下按照建議進行部署? 我試圖通過Heroku CLI發送,但沒有成功。

我試過的

npm run build
cd dist/
git init
heroku git:remote -a farm-rooster
git add .
git commit -am "Início"
git push heroku master

應用程序日志:

2016-10-09T23:33:33.364424 + 00:00 app [web.1]:npm ERR! 您可以通過以下方式獲取有關如何為此項目打開問題的信息:

2016-10-09T23:33:33.364648 + 00:00 app [web.1]:npm ERR! 或者,如果不可用,則可以通過以下方式獲取其信息:

2016-10-09T23:33:33.364968 + 00:00 app [web.1]:npm ERR! npm owner ls express-mongoose-es6-rest-api

2016-10-09T23:33:33.365079 + 00:00 app [web.1]:npm ERR! 上面可能還有其他日志記錄輸出。

2016-10-09T23:33:33.368518 + 00:00 app [web.1]:

2016-10-09T23:33:33.368965 + 00:00 app [web.1]:npm ERR! 請在任何支持請求中包括以下文件:

2016-10-09T23:33:33.369132 + 00:00 app [web.1]:npm ERR!
/app/npm-debug.log

2016-10-09T23:33:33.469487 + 00:00 heroku [web.1]:狀態從開始更改為崩潰

2016-10-09T23:33:33.457348 + 00:00 heroku [web.1]:進程退出,狀態為1

2016-10-09T23:33:35.414253 + 00:00 heroku [router]:at =錯誤代碼= H10 desc =“應用程序崩潰”方法= GET路徑=“ /”主機= farm-rooster.herokuapp.com request_id = e88f1c0e -4ea5-4610-82d6-b437bf37ea0e fwd =“ 186.203.235.191” dyno = connect = service = status = 503字節=

2016-10-09T23:33:36.117238 + 00:00 heroku [router]:at =錯誤代碼= H10 desc =“應用程序崩潰”方法= GET路徑=“ / favicon.ico”主機= farm-rooster.herokuapp.com request_id = c8859482-b508-4e93-b9dc-3455558d13ed fwd =“ 186.203.235.191” dyno = connect = service =狀態= 503字節=

1-您可以先將Procfile添加到項目中,然后再將其發送到Heroku。 我認為它應該像web: npm run start

2-您不應該只將dist文件夾發送到Heroku,而應該發送整個項目。 Heroku將構建它然后運行(這是Heroku的功能之一)。

3-建議使用PM2,以便監視您的應用程序並在其中斷時重新啟動。 Heroku會為您做到這一點,所以我認為在這里使用PM2並不是真的有用

只是為了清楚地說明Procfile和處理/dist文件夾

Procfile,

為了確定如何啟動您的應用,Heroku首先尋找一個Procfile。 如果Node.js應用程序不存在Procfile,我們將嘗試通過package.json中的啟動腳本啟動默認的Web進程。 因此,您可以擁有Procfile,也可以在package.json中定義“開始”部分。 例如"start": "node server.js"

/dist文件夾

你有兩個選擇

  1. dist文件夾與其他應用程序一起推送到heroku。
  2. 不要推送dist並將其保留在gitignore文件中。 在package.json中使用postintall script創建/ dist文件夾"postinstall": "ng build --prod" 后安裝腳本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM