将应用程序部署到不在项目根目录中的 Heroku?

Eva*_*nss 8 heroku

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

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

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

当我部署 Heroku 时,它似乎运行npm run start在顶级 package.json 上。我怎样才能让 Heroku 忽略这个并只运行/server文件夹中的 package.json ?

更新:我在我的项目根目录中创建了一个 Procfile,如下所示:

web: ./server npm run start
Run Code Online (Sandbox Code Playgroud)

但是当我部署时,我收到一个应用程序错误:

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
Run Code Online (Sandbox Code Playgroud)

小智 6

查看 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"
  }
}
Run Code Online (Sandbox Code Playgroud)


Wes*_*son 1

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