在尝试将GraphQL集成到ReactJS应用程序时陷入CORS问题。
情况:
我正在尝试执行一个简单的graphql查询。不使用数据库。该程序可以正常运行,无需执行graphql。
浏览器:Google Chrome版本78.0.3904.87
计算机:MacBook Pro,2015年中
相关依赖项:
- 阿波罗升压:0.4.4
- 阿波罗客户端:2.6.4
- cors:2.8.5
- 表达:4.17.0
- graphql:14.5.8
- 反应:16.8.6
- 反应阿波罗:3.1.3
这是我在浏览器控制台中遇到的错误:
OPTIONS http://localhost:5000/graphql net :: ERR_CONNECTION_REFUSED
在此处查看存储库/目录结构:
https://github.com/curtisyungen/hh-graphql
下面是我的server.js文件:
const express = require("express");
const graphqlHTTP = require('express-graphql');
const schema = require('./src/graphql/schema');
const cors = require('cors');
const PORT = 5000;
const app = express();
app.use(cors());
app.use('/graphql',graphqlHTTP({
schema,graphiql: true,}));
app.listen(PORT,() => {
console.log(`Listening on port ${PORT}. Visit http://localhost:${PORT}/ in your browser.`);
});
module.exports.app = app;
以下是我在App.js文件中设置Apollo客户端的方法:
const cache = new InmemoryCache();
const link = new HttpLink({
uri: 'http://localhost:5000/graphql'
});
const client = new ApolloClient({
cache,link,});
以下是浏览器中“网络”标签的屏幕截图:
Screenshot of Network Tab in Browser
我在互联网上搜寻解决方案,并尝试了以下方法:
- app.use(cors());
- 将fetchOptions:{模式:'no-cors'}添加到Apollo Client
- 向Chrome添加access-control-allow-origin扩展
- 使用本地IP地址代替“ localhost”
我正在关注一个YouTube教程,该家伙通过导入cors解决了这个问题。它对他有用,但对我却不起作用...任何想法?