Как развернуть Strapi и React на одном хостинге? - PullRequest
1 голос
/ 10 апреля 2020

все. Я только что развернул проект Strapi и React. Но я принимал человека, так что это кажется очень странным. Как мне сделать размещение на одном хостинге. Я не могу найти никаких руководств по этому поводу.

Как это:

Страпи: https://nuclear-leagcy.herokuapp.com/admin https://nuclear-leagcy.herokuapp.com/graphql

Реагировать https://nuclear-leagcy.herokuapp.com

Я думаю, мне нужно определить сервер. js с express. Но сейчас у меня нет никаких идей об этом.

Дополнения. Я хочу использовать graphql на производстве, но хочу отключить интерфейс игровой площадки на производстве, чтобы другие не могли этого сделать.

Как я могу это сделать?

1 Ответ

1 голос
/ 10 апреля 2020

Используя 3.0.0.beta.19.5 для развертывания Strapi + React на том же сервере, вам необходимо выполнить следующие действия:

rootDir = означает папку root в Проект Strapi.

Вам необходимо создать новое Middleware, rootDir / middlewares / serve-реагировать в двух файлах.

  1. по умолчанию. json
{
  "serve-react": {
    "enabled": true
  }
}
index. js
'use strict';

/**
 * Module dependencies
 */

// Node.js core.
const fs = require('fs');
const path = require('path');
const koaStatic = require('koa-static');

/**
 * Serve react hook
 */

module.exports = strapi => {

  return {
    /**
     * Initialize the hook
     */

    async initialize() {
      const {maxAge, path: publicPath} = strapi.config.middleware.settings.public;
      const staticDir = path.resolve(strapi.dir, publicPath || strapi.config.paths.static);

      strapi.router.get(
        '/*',
        async (ctx, next) => {
          const parse = path.parse(ctx.url);
          ctx.url = path.join(parse.dir, parse.base);

          await next();
        },
        koaStatic(staticDir, {
          maxage: maxAge,
          defer: false, // do not allow other middleware to serve content before this one
        })
      );

      // if no resource is matched by koa-static, just default to serve index file
      // useful for SPA routes
      strapi.router.get('*', ctx => {
        ctx.type = 'html';
        ctx.body = fs.createReadStream(path.join(staticDir + '/index.html'));
      });
    },
  };
};

Добавьте промежуточное программное обеспечение, только что созданное в цепочке. ROOTDIR / конфигурация / промежуточное программное обеспечение. json. Обратите внимание, что в этом случае единственное, что добавляется в этом случае, это «служить-реагировать» в конце свойства «после».

{
  "timeout": 100,
  "load": {
    "before": [
      "responseTime",
      "logger",
      "cors",
      "responses",
      "gzip"
    ],
    "order": [
      "Define the middlewares' load order by putting their name in this array is the right order"
    ],
    "after": [
      "parser",
      "router",
      "serve-react"
    ]
  }
}
...