Я пытался развернуть приложение с несколькими портами на GCP 。。。 Кто-нибудь может сказать мне, как --?
На самом деле приложение включает только два приложения ... Во-первых, это функция оплаты роутер. Во-вторых, это graphQL, основанный на apollo-server ....
Они отлично работают локально, я называю localhost 4000 для graphQL и 5000 для node.js.
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const path = require('path');
const graphqlHTTP = require('express-graphql');
const { buildSchema } = require('graphql');
const { gql } = require('apollo-server-express');
const { ApolloServer} = require('apollo-server-express');
const { GraphQLServer } = require('graphql-yoga');
const { prisma } = require('./generated/prisma-client');
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
//be careful! The token has changed!
app.post('/payment', (req, res) => {
const body = {
source: 'tok_visa',
amount: req.body.amount,
currency: 'usd'
};
stripe.charges.create(body, (stripeErr, stripeRes) => {
if (stripeErr) {
console.log("stripe error");
console.log(stripeErr);
res.status(500).send({ error: stripeErr });
} else {
console.log(stripeRes);
res.status(200).send({ success: stripeRes });
}
});
});
const typeDefs = gql`
type Collection {
id: ID!
title: String!
items: [Item!]!
}
type Item {
id: ID!
name: String!
price: Float!
imageUrl: String!
collection: Collection
}
type Query {
collections: [Collection!]!
collection(id: ID!): Collection
getCollectionsByTitle(title: String): Collection
}
`;
const resolvers = {
Query: {
collections: (root, args, ctx, info) => ctx.prisma.collections({}, info),
collection: (root, { id }, ctx) => ctx.prisma.collection({ id }),
getCollectionsByTitle: (root, { title }, ctx) =>
ctx.prisma.collection({ title })
},
Item: {
collection: ({ id }, args, context) => {
return context.prisma.item({ id }).collection();
}
},
Collection: {
items: ({ id }, args, context) => {
return context.prisma.collection({ id }).items();
}
}
};
const server = new GraphQLServer({
typeDefs,
resolvers,
context: {
prisma
}
});
server.start(
{
port:4000,
cors: {
origin: '*'
}
},
() => console.log('GraphQL server is running')
);
// Start the server, refer to google cloud platform documentation
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
console.log('Press Ctrl+C to quit.');
});
// [END gae_flex_quickstart]
module.exports = app;