Интегрировать и обслуживать React-Admin из существующего приложения Express - PullRequest
0 голосов
/ 04 января 2019

В моем проекте мне нужно приложение администратора. Я наткнулся на админ-реакцию. Кажется, он делает именно то, что мне нужно. Я проверил их учебник . Сделал несколько черновиков и запустил их (следуя инструкциям).

Однако у меня есть приложение Express, у которого уже есть маршруты и API, а также приложение React, обслуживаемое Express. Вместо этого я хотел бы использовать Admin-React, другими словами удалить существующее приложение React и начать настраивать его как статический ресурс. Проще говоря, мое существующее приложение Express должно обслуживать React-Admin и предоставлять ему существующие API.

Глядя на учебники, я не нашел информации, как это сделать. У него был запуск пряжи, и он начинает работать на порту 3000.

Мне не хватает чего-то очень элементарного, кажется. Есть ли пример такой настройки?

Это мой Express.js, который уже обслуживает приложение React (не React Admin) из общей папки.

'use strict';
/* jshint camelcase:false */

require('dotenv').config();

if (process.env.NODE_ENV === undefined) {
    throw new Error('No environment variable was set. For development use [export NODE_ENV=dev].');
}

let express = require('express');
var favicon = require('serve-favicon');
let path = require('path');
let cookieParser = require('cookie-parser');
let bodyParser = require('body-parser');
let expressValidator = require('express-validator');
let configuration = require('./app/Configuration');
let app = configuration.getApp();
let config = configuration.getParameters();
let errorHandler = require('./src/Error/Handler');
let session = require('client-sessions');

app.use(require('./src/Twig/ExtendWithCustomFunctions').extend());

app.use(session({
    cookieName: 'session',
    secret: 'xxxxxxx',
    duration: 12 * 60 * 60 * 1000,
    activeDuration: 2 * 60 * 60 * 1000 
}));

app.use(bodyParser.json());
app.use(errorHandler.bodyParser);
app.use(expressValidator());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(favicon(__dirname + '/public/favicon.ico'));

configuration.setErrorHandler(errorHandler);
configuration.initializeControllers(__dirname);

configuration.initializeErrorHandling();

module.exports = app;

1 Ответ

0 голосов
/ 04 января 2019

Единственный способ обслуживать React Admin с конечной точки Express - это сначала построить его.

Если вы следовали учебному пособию, вы должны были запустить приложение create-react-app, поэтому вы можете запустить следующую команду для связывания вашего приложения:

npm run build
# or
yarn build

Ваши файлы пакета будут доступны в папке static.

Затем вы можете переместить эти файлы в ваше экспресс-приложение в подпапку, где вы сможете обслуживать их с помощью express.static.

Подробнее о сборке и развертывании приложения create-реагировать на приложение: https://facebook.github.io/create-react-app/docs/deployment

Существует даже пример того, как обслуживать сборку: https://facebook.github.io/create-react-app/docs/deployment#other-solutions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...