Приложение зависает после аутентификации с Shopify при использовании koa-session-mongoose - PullRequest
0 голосов
/ 27 июня 2019

Я использую createShopifyAuth() с моим не встроенным приложением, работающим на localhost. Когда перешел на http://localhost:3001/auth?shop=fakedemo.myshopify.com, предложили установить, то вроде бы зависло на редиректе. * Хотя я вижу данные в журнале консоли. Проблема должна быть в том, как я настраиваю пакет npm koa-session-mongoose

Используя эту настройку , но с createShopifyAuth вместо shopifyAuth

require('isomorphic-fetch');
const Koa = require('koa');
const Router = require('koa-router');
const next = require('next');
const { default: createShopifyAuth } = require('@shopify/koa-shopify-auth');
const dotenv = require('dotenv');
const { verifyRequest } = require('@shopify/koa-shopify-auth');
const session = require('koa-session');
const mongoose = require('mongoose');
const MongooseStore = require('koa-session-mongoose');

dotenv.config();

const port = parseInt(process.env.PORT, 10) || 3001;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

const { SHOPIFY_API_SECRET_KEY, SHOPIFY_API_KEY } = process.env;

app.prepare().then(() => {

// MongoDb setup
  mongoose.Promise = require('bluebird');
  mongoose.connect('mongodb-url', { useNewUrlParser: true})
  mongoose.connection
    .once('open', () => console.log('Connected to MongoLab instance.'))
    .on('error', error => console.log('Error connecting to MongoLab:', error));

  const server = new Koa();
  const router = new Router();

  server.keys = [SHOPIFY_API_SECRET_KEY];

  // When uncommented, webpage hangs after auth but
  // works perfectly as:
  server.use(session(/*{ store: new MongooseStore() },*/ server));

  // TODO: Chain .use

  server.use(
    createShopifyAuth({
      apiKey: SHOPIFY_API_KEY,
      secret: SHOPIFY_API_SECRET_KEY,
      scopes: ['read_products', 'read_customers', 'read_orders'],
      // disables embedded app:
      accessMode: 'offline',
      afterAuth(ctx) {
        const { shop, accessToken } = ctx.session;
        //.. Save to database. Mongo db?
        // * I see data when website hangs
        console.log(shop, accessToken)
        // redirect never seem to call when using MongooseStore
        ctx.redirect('/admin/orders');
      },
    }),
  );

  [...] // some router.get() etc

  server.use(verifyRequest());

  server.use(router.routes())

  server.use(async (ctx) => {
    await handle(ctx.req, ctx.res);
    ctx.respond = false;
    ctx.res.statusCode = 200;
    return
  });

  server.listen(port, () => {
    console.log(`> Ready on http://localhost:${port}`);
  });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...