我需要部署不在项目根目录下的节点应用程序。
我的项目与此类似: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
答案 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子树来完成。