【问题标题】:GraphiQL for Apollo Fine on Desktop, 404 on Laptop?GraphiQL for Apollo Fine 在台式机上,404 在笔记本电脑上?
【发布时间】:2017-01-09 19:30:56
【问题描述】:

我的 GraphIQL 在我的桌面 Mac 上运行良好,http://localhost:8080/graphql

在我的笔记本电脑 Mac 上,使用通过 Github 同步的完全相同的代码,我在控制台中显示:

GraphQL 服务器现在在 http://localhost:8080/graphql 上运行

...这似乎表明 graphql 已连接。但是访问 http://localhost:8080/graphql 出现 404 错误:

找不到

在此服务器上找不到请求的 URL /graphql

我什至删除了我的 node_modules 文件夹并通过 meteor npm install 从头开始​​重新安装。

这对任何人都有意义吗?

这是设置 Apollo 和 graphiql 的代码:

//apollo
import express from 'express';
import { apolloServer } from 'apollo-server';
import Schema from '/imports/api/schema';
import Mocks from '/imports/api/mocks';
import Resolvers from '/imports/api/resolvers';
import Connectors from '/imports/api/db-connectors';

const GRAPHQL_PORT = 8080;

const graphQLServer = express();

graphQLServer.use('/graphql', apolloServer({
    graphiql: true,
    schema: Schema,
    resolvers: Resolvers,
    connectors: Connectors,
    mocks: Mocks,
}));

graphQLServer.listen(GRAPHQL_PORT, () => console.log(
    `GraphQL Server is now running on http://localhost:${GRAPHQL_PORT}/graphql`
));

【问题讨论】:

    标签: meteor graphql


    【解决方案1】:

    所以,这可能是因为您在笔记本电脑上的 8080 上运行了其他东西。也许尝试将未捕获的快速错误记录到控制台?

    另一种可能性是您没有在桌面上尝试完全相同的 URL。 apolloServer 0.2 版目前只允许 POST 请求。当您导航到浏览器中的地址时,它会尝试发送 GET 请求,这将导致 404。尝试在单独的路由上启动 graphiql,看看您是否可以访问。

    PS:如果你有机会,你应该向你复制粘贴代码 sn-p 的 repo 做一个 PR,这样其他人就不会遇到同样的问题 ;-)

    【讨论】:

    • 我重新启动笔记本电脑以终止所有正在运行的进程,但仍然收到 404 错误。服务器代码来自http://docs.apollostack.com/apollo-server/migration.html 的文档。获取 .listen 回调的语法是什么?谷歌搜索graphQLServer.listen 似乎没有找到回调示例。我会添加它,看看错误说明了什么。
    • 我刚刚使用npm ls比较了两台机器上安装的node_modules,发现了差异,即使笔记本电脑使用了桌面上的package.json文件。这可能会导致错误。我必须重建我的 package.json 文件以匹配桌面 node_modules 文件夹中的内容。
    • 我刚刚在我的桌面上使用https://www.npmjs.com/package/npm-collect 重建了我的 package.json 文件。它构建并成功运行,像以前一样正确访问http://localhost:8080/graphql。然后我通过 git 将新的 package.json 文件带入笔记本电脑应用程序文件夹并重建。 http://localhost:8080/graphql 在我的笔记本电脑上仍然显示 404 错误。我还不知道如何调试它。 :)
    • 如果有人可以发布 graphQLServer.listen 调用的回调语法,我可以试试看错误消息的内容。
    • 也可能是您收到 404,因为 apolloServer 只允许 POST 请求。尝试按照使用 apolloServer 设置 graphiql 的说明进行操作,看看是否可以在浏览器中使用它。
    【解决方案2】:

    我使用npm remove apollo-servernpm install apollo-server --save 来更新apollo-server npm 模块,并为apollo-client 做了同样的事情。然后我更新到在http://docs.apollostack.com/apollo-server/migration.html 找到的阿波罗服务器 0.2.x 代码。我也更新到 Meteor 1.4.x。现在 404 错误消失了。

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2022-11-04
      • 2018-06-20
      • 2014-03-29
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多