我正在尝试遵循本教程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中做了额外的事情:
我尝试过的事情:
知道问题出在哪里吗?似乎express没有为/graphql路由创建POST端点。
编辑:如果我改变这个就可以了:
apolloServer.applyMiddleware({ app });
对此:
apolloServer.applyMiddleware({ app, path: "/" });
我找到了答案在这里!有帮助。请检查一下!
尝试使用 127.0.0.1 而不是 localhost。这对我有用。另外,如果您仍然想使用缓存的查询和突变,从 127.0.0.1 切换回本地主机将使本地主机再次工作。
我最近也遇到这个问题了。正是这种情况
无法访问服务器/没有可见架构,但仍然能够执行查询
要解决此问题,您应该在 ApolloServer 初始化程序中添加以下内容:
const server = new ApolloServer({
csrfPrevention: true,
plugins: [
ApolloServerPluginLandingPageGraphQLPlayground(),
],
instrospection: true,
})
阅读更多关于内省的信息这里和这个github问题。
在运行服务器之前,尝试将 NODE_ENV 设置为测试或生产以外的任何值