Итак, я перехожу на apollo-server-express 2.3.3 (я использовал 1.3.6). Я следовал нескольким инструкциям, вносил необходимые изменения, но застрял в проблеме CORS.
В соответствии с документами вы должны использовать функцию applyMiddleware для подключения сервера apollo к express.
В настоящее время я делаю следующее:
const app = express();
// CORS configuration
const corsOptions = {
origin: 'http://localhost:3000',
credentials: true
}
app.use(cors(corsOptions))
// Setup JWT authentication middleware
app.use(async (req, res, next) => {
const token = req.headers['authorization'];
if(token !== "null"){
try {
const currentUser = await jwt.verify(token, process.env.SECRET)
req.currentUser = currentUser
} catch(e) {
console.error(e);
}
}
next();
});
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => ({ Property, User, currentUser: req.currentUser })
});
server.applyMiddleware({ app });
const PORT = process.env.PORT || 4000;
app.listen(PORT, () => {
console.log(`Server listening on ${PORT}`);
})
По какой-то причине мое промежуточное промежуточное ПО, кажется, не выполняется, когда я пытаюсь выполнить запрос от localhost: 3000 (клиентское приложение) Я получаю типичную ошибку CORS
С apollo-server-express 1.3.6 я без проблем делал следующее:
app.use(
'/graphql',
graphqlUploadExpress({ maxFileSize: 10000000, maxFiles: 10 }),
bodyParser.json(),
graphqlExpress(({ currentUser }) => ({
schema,
context: {
// Pass Mongoose models
Property,
User,
currentUser
}
}))
);
Теперь с новой версией событие tho docsчтобы это выглядело как простая миграция, мне кажется, это не сработало.Я проверил различные статьи, и, похоже, ни у кого не возникло проблемы.
Надеюсь, вы, ребята, можете мне помочь.
Ура!