从现有Express应用程序集成并服务React-Admin

时间:2019-01-04 13:46:16

标签: reactjs express react-admin

在我的项目中,我需要一个管理员应用程序。我偶然发现了管理员反应。看来它确实满足了我的需要。我已经检查了他们的tutorial。作了一些草稿,并使其运行(按照教程进行)。

但是,我有一个Express应用程序,该应用程序已经具有路由和API,并且还有一个Express应用程序提供的React应用程序。我想改用Admin-React,换句话说,删除现有的React应用程序,并开始将React-Admin一个自定义为静态资源。简而言之,我现有的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 :(得分:2)

从Express端点提供React Admin的唯一方法是先构建它。

如果您按照本教程操作,则应该已经运行了create-react-app应用程序,因此可以运行以下命令来捆绑您的应用程序:

npm run build
# or
yarn build

您的捆绑包文件将位于static文件夹下。

然后,您可以将这些文件移动到子文件夹中的Express应用程序中,并可以在其中使用express.static进行提供。

有关create-react-app构建和部署的更多信息:https://facebook.github.io/create-react-app/docs/deployment

甚至还有一个有关如何服务于构建的示例:https://facebook.github.io/create-react-app/docs/deployment#other-solutions