Koa.js: выполняется только первое промежуточное программное обеспечение, все остальные отказывают - PullRequest
0 голосов
/ 01 ноября 2019

Кажется, у меня проблема только с одним промежуточным программным обеспечением, способным работать в Koa.js

import "@babel/polyfill";
import dotenv from "dotenv";
import "isomorphic-fetch";
import graphQLProxy, { ApiVersion } from "@shopify/koa-shopify-graphql-proxy";
import Koa from "koa";
import next from "next";
import session from "koa-session";
import * as handlers from "./handlers/index";
import { verifyRequest } from "@shopify/koa-shopify-auth";
dotenv.config();

import Middleware from './middleware';
import router from './router';


const middleware = new Middleware();


////// Application Config //////
let port;
if (process.env.PORT) {
  port = process.env.PORT;
} else port = 8081;
const dev = process.env.NODE_ENV !== "production";
const app = next({dev});
const handleRequests = app.getRequestHandler();
const { SHOPIFY_API_SECRET } = process.env;


////// Application Instantiation //////
app
  .prepare().then(() => {
  const server = new Koa();

  ////// Middleware //////

  // loggers
  server.use(async (ctx: any, next: any) => {
    console.log(ctx, `=====ctx=====`)
    await next();
  });
  server.use(async (ctx: any, next: any) => {
    console.log(ctx.request, `=====ctx.request=====`) // doesn't log
    await next();
  });

 // shopify
  server.use(session(server));
  server.keys = [SHOPIFY_API_SECRET] as string[];
  server.use(middleware.instantiateShopify());
  server.use(
    graphQLProxy({version: (ApiVersion as unknown as any).October19}));
  server.use(verifyRequest());
  server.use((ctx: any) => handleRequests(ctx.req, ctx.res));

  ////// Routing //////

  server.use(router.allowedMethods());
  server.use(router.routes());

  server.listen(port, () => {
    console.log(`> Ready on http://localhost:${port}`);
  });
});

В приведенном выше коде 2-й оператор журнала не выполняется. Также остальная часть приложения не работает, и я вижу "Not Found" в браузере.

Пробовал

Удаление промежуточного программного обеспечения регистрации позволяет приложению по крайней мере отображаться в браузере.

Изменение порядка промежуточного программного обеспечения для ведения журнала позволяет запускать только первое.

Удаление await next(); не устраняет проблему.

Похоже, чтобыть какие-либо ошибки консоли / терминала.

Кто-нибудь знает, что еще может быть причиной этой проблемы?

1 Ответ

0 голосов
/ 01 ноября 2019

попробуйте это ...

server.use( async (ctx: any, next: any) => {
    console.log(ctx, `=====ctx=====`)
    next();
  });
  server.use(async (ctx: any, next: any) => {
    console.log(ctx.request, `=====ctx.request=====`) // doesn't log
    next();
  });

надеюсь, это поможет ..

...