将一个应用程序部署到项目根目录中没有的Heroku?

时间:2018-07-05 08:56:49

标签: heroku

我需要部署不在项目根目录下的节点应用程序。

我的项目与此类似:https://github.com/graphql-boilerplates/react-fullstack-graphql/tree/master/advanced

项目的根目录是一个React应用程序,但我不想部署它。在名为“服务器”的文件夹中,有我的节点服务器,这就是我需要部署到Heroku的地方。

当我部署Heroku时,似乎在顶级package.json上运行npm run start。如何让Heroku忽略此问题,而只运行/server文件夹中的package.json?

更新:我已经在我的项目根目录中使用以下命令创建了一个Procfile:

web: ./server npm run start

但是当我部署时,出现应用程序错误:

2018-07-05T12:41:51.627168+00:00 app[api]: Release v4 created by user MYEMAIL@gmail.com
2018-07-05T12:41:59.000000+00:00 app[api]: Build succeeded
2018-07-05T12:42:02.176695+00:00 heroku[web.1]: Starting process with command `./server npm run start`
2018-07-05T12:42:04.817337+00:00 heroku[web.1]: State changed from starting to crashed
2018-07-05T12:42:04.701159+00:00 app[web.1]: bash: ./server: Is a directory
2018-07-05T12:42:04.782252+00:00 heroku[web.1]: Process exited with status 126
2018-07-05T12:42:11.974345+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=DEPLOY-NAME.herokuapp.com request_id=c2cba42e-80af-4b16-95sdfdfd-2918 fwd="86.343.251.15" dyno= connect= service= status=503 bytes= protocol=https

3 个答案:

答案 0 :(得分:1)

您可以通过定义覆盖Procfile的{​​{1}}来更改此行为:https://devcenter.heroku.com/articles/nodejs-support#default-web-process-type

答案 1 :(得分:1)

签出heroku-prebuild脚本。我有一个API应用程序和一个React应用程序,它们都由express服务,但位于不同的文件夹中。将package.json放在根目录中,然后使用heroku-prebuild移至其他文件夹。

{
  "scripts": {
    "heroku-prebuild": "cd app && npm install && npm run build && cd .. && cd api && npm install",
    "start": "cd api && npm start"
  }
}

答案 2 :(得分:0)

我已经通知了Heroku支持,他们几乎说他们不支持部署不在项目根目录中的节点应用程序。

我打算拆分项目,但是您可以使用git子树来完成。