Я использую Apollo Server в Express, в котором предусмотрена загрузка файлов через многокомпонентную форму.
Я также использую Skipper.js для обработки загрузки файлов по «обычным» маршрутам вне моей конечной точки GraphQL.
Похоже, что промежуточное программное обеспечение Skipper имеет приоритет и конфликтует с функцией загрузки файлов на сервер Apollo.
Есть ли способ отключить Skipper на некоторых маршрутах?Или есть какой-то обходной путь, чтобы оба могли работать вместе?
Вот урезанная версия моего экспресс-приложения:
import 'dotenv/config';
import cors from 'cors';
import express from 'express';
import skipper from 'skipper';
import { ApolloServer } from 'apollo-server-express';
import authMiddleware from './middlewares/auth';
import { fileController } from './controllers';
const app = express();
app.use(cors());
app.use(skipper());
app.post('/xxxxx', authMiddleware, fileController.upload);
const server = new ApolloServer({
...
});
server.applyMiddleware({ app, path: '/graphql' });
sequelize.sync().then(async () => {
app.listen({ port: 8000 }, () => {
console.log(`Apollo Server on http://localhost:8000/graphql`);
});
});
Если я закомментирую строку app.use(skipper());
, загрузка файла apolloработает.Если я оставлю его, мой распознаватель GraphQL никогда не будет вызван, а время отправки запроса истечет.Спасибо!