我的 httpsSever 似乎永远不会启动,因为它既不记录“服务器正在侦听端口 3001”,也不向控制台记录任何错误:
httpServer.listen(3001, () => {
console.log('Server is listening on port 3001');
})
.on('error', (err) => {
console.error('Server error: ', err);
});
完整的 server.js 是:
import path from 'path';
import dotenv from 'dotenv';
dotenv.config();
import { authMiddleware } from './utils/auth.js';
import { connection as db } from './config/connection.js';
import { ApolloServer } from 'apollo-server-express';
import { createServer } from 'http';
import express from 'express';
import { ApolloServerPluginDrainHttpServer } from 'apollo-server-core';
import { WebSocketServer } from 'ws';
import { useServer } from 'graphql-ws/lib/use/ws';
import { schema } from './schemas/index.js';
( async () => {
const app = express();
const httpServer = createServer(app);
const wsServer = new WebSocketServer({
server: httpServer,
path: '/graphql',
});
const serverCleanup = useServer({ schema }, wsServer);
const cors = require('cors');
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
const indexRoute = require('./routes/index');
app.use('/api', indexRoute);
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, '../client/build')));
}
app.get(['/', '/login', '/signup'], (req, res) => {
res.sendFile(path.join(__dirname, '../client/build/index.html'));
});
const apolloServer = new ApolloServer({
schema,
context: authMiddleware,
plugins: [
ApolloServerPluginDrainHttpServer({ httpServer }),
{
async serverWillStart() {
return {
async drainServer() {
await serverCleanup.dispose();
},
};
},
},
],
});
await apolloServer.start();
apolloServer.applyMiddleware({ app });
httpServer.listen(3001, () => {
console.log('Server is listening on port 3001');
})
.on('error', (err) => {
console.error('Server error: ', err);
});
});
在前端我得到
createHttpLink.ts:185 POST http://localhost:3001/graphql 净:: ERR_CONNECTION_REFUSED
因此端点似乎有问题。
我猜我的 server.js 设置不正确。