Apollo Server Express - 无法到达游乐场

问题描述 投票:0回答:4

我正在尝试遵循本教程https://www.youtube.com/watch?v=I6ypD7qv3Z8&t=48972s但我坚持尝试让游乐场发挥作用。

我通过“http://localhost:4000/graphql”到达游乐场,但不知何故我收到“无法访问服务器”错误。在网络检查器中,我看到“无法 POST /”404。

这是我的代码(app.ts):

import { ApolloServer } from "apollo-server-express";
import { ApolloServerPluginLandingPageGraphQLPlayground } from "apollo-server-core";
import { buildSchema } from "type-graphql";
import { PORT } from "./constants";
import { HelloResolver } from "./graphql/resolvers";

export const main = async () => {
  const app = express();

  const apolloServer = new ApolloServer({
    schema: await buildSchema({ resolvers: [HelloResolver], validate: false }),
    plugins: [ApolloServerPluginLandingPageGraphQLPlayground],
  });
  await apolloServer.start();

  apolloServer.applyMiddleware({ app });

  app.listen(PORT, () => {
    console.log(
      `Server started on http://localhost:${PORT}${apolloServer.graphqlPath}`
    );
  });
};

我从tut中做了额外的事情:

  • 将 PORT 设为值为 4000 的变量
  • 为旧学校操场添加了“ApolloServerPluginLandingPageGraphQLPlayground”(最新的也不起作用)
  • 添加了“await apolloServer.start();”文档中指定的行,如果不这样做,我会收到错误

我尝试过的事情:

知道问题出在哪里吗?似乎express没有为/graphql路由创建POST端点。

编辑:如果我改变这个就可以了:

apolloServer.applyMiddleware({ app });
对此:
apolloServer.applyMiddleware({ app, path: "/" });

node.js express graphql apollo-server
4个回答
2
投票

我找到了答案在这里!有帮助。请检查一下!


0
投票

尝试使用 127.0.0.1 而不是 localhost。这对我有用。另外,如果您仍然想使用缓存的查询和突变,从 127.0.0.1 切换回本地主机将使本地主机再次工作。


0
投票

我最近也遇到这个问题了。正是这种情况

无法访问服务器/没有可见架构,但仍然能够执行查询

要解决此问题,您应该在 ApolloServer 初始化程序中添加以下内容:

const server = new ApolloServer({
  csrfPrevention: true,
  plugins: [
     ApolloServerPluginLandingPageGraphQLPlayground(),
  ],
  instrospection: true,
})

阅读更多关于内省的信息这里这个github问题


0
投票

在运行服务器之前,尝试将 NODE_ENV 设置为测试或生产以外的任何值

© www.soinside.com 2019 - 2024. All rights reserved.