将nodejs应用程序部署到Heroku

时间:2016-10-09 23:17:02

标签: node.js express heroku deployment

我有一个存储库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所有者ls   表达-猫鼬-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 = error code = H10   desc =" App崩溃" method = GET path =" /"主机= farm-rooster.herokuapp.com   request_id = e88f1c0e-4ea5-4610-82d6-b437bf37ea0e fwd =" 186.203.235.191"   dyno = connect = service = status = 503 bytes =

     

2016-10-09T23:33:36.117238 + 00:00 heroku [router]:at = error code = H10   desc =" App崩溃" method = GET path =" /favicon.ico"   主机= farm-rooster.herokuapp.com   request_id = c8859482-b508-4e93-b9dc-3455558d13ed fwd =" 186.203.235.191"   dyno = connect = service = status = 503 bytes =

2 个答案:

答案 0 :(得分:0)

1 - 您可以尝试在项目中添加Procfile,然后再将其发送给Heroku。我认为它应该像web: npm run start

2 - 您不应该只将dist文件夹发送给Heroku,您应该发送整个项目。 Heroku将构建它然后运行(这是Heroku的功能之一)。

3 - 建议使用PM2,以便在应用程序中断时对其进行监控并重新启动。 Heroku将为您做到这一点,所以我不认为在这里使用PM2非常有用

答案 1 :(得分:0)

只是要明确说明Procfile和处理/dist文件夹

Procfile

  

要确定如何启动您的应用,Heroku首先寻找Procfile。   如果Node.js应用程序不存在Procfile,我们将尝试启动   默认的Web进程通过package.json中的启动脚本。因此,您可以拥有Procfile,也可以在package.json中定义“开始”部分。例如"start": "node server.js"

/dist文件夹

您有两个选择

  1. dist文件夹与其他应用程序内容一起推送到heroku。
  2. 请勿推送dist并将其保留在gitignore文件中。在package.json中使用postintall script创建/ dist文件夹"postinstall": "ng build --prod" postinstall script