【发布时间】:2022-08-06 14:19:46
【问题描述】:
我创建了一个带有 GraphQL API 和 React 客户端的应用程序。我的项目结构如下:
project
│ README.md
│
└───server
│ │ package.json
│ │
│ └───src
│ │ index.ts
│ │
│ └───entity/migration/resolver/etc.
│ │ ...
│
└───client
│ │ package.json
│ │
│ └───public
│ │ │ index.html
| | | ...
│ │ │
│ └───src
│ │ index.js
│ │
│ └───components
│ │ ...
我想将整个应用程序部署到 Heroku,但我不太确定该怎么做。在我的本地机器上,我的服务器在localhost:4000 上运行,我的客户端在localhost:3000 上运行,我的客户端使用@apollo/client 向我的服务器发出请求。
我需要将两个单独的应用程序部署到 Heroku,还是有办法将这两个应用程序部署为一个应用程序?
这是我的server/src/index.ts 的代码:
import dotenv from \"dotenv\"
import \"reflect-metadata\"
import { ApolloServer } from \"apollo-server\"
import { buildSchema } from \"type-graphql\"
import { createConnection } from \"typeorm\"
(async () => {
await createConnection()
const apolloServer = new ApolloServer({
schema: await buildSchema({
resolvers: [`${__dirname}/resolver/*.ts`],
})
})
const port = process.env.PORT || 4000
apolloServer.listen(port, () => {
console.log(`Server started on port: ${port}`)
})
})()
这是我client/src/index.js 的代码:
import React from \"react\"
import ReactDOM from \"react-dom\"
import { ApolloClient, ApolloProvider, InMemoryCache } from \"@apollo/client\"
import App from \"./components/App\"
const client = new ApolloClient({
uri: process.env.ENDPOINT || \"http://localhost:4000\",
cache: new InMemoryCache()
})
ReactDOM.render(<ApolloProvider client={client}><App /></ApolloProvider>, document.getElementById(\"root\"))
标签: node.js reactjs heroku graphql apollo