从现有的 Express 应用程序集成和服务 React-Admin
Integrate and serve React-Admin from existing Express application
在我的项目中,我需要一个管理员应用程序。我偶然发现了管理员反应。看起来它确实做了我需要它做的事情。我检查了他们的tutorial。做了一些草稿,并得到它 运行(按照教程)。
但是我有一个具有路由的 Express 应用程序并且 API 已经在工作,而且我还有一个由 Express 应用程序提供服务的 React 应用程序。我想改为提供 Admin-React,换句话说,删除现有的 React 应用程序并开始将 React-Admin 自定义为静态资源。简单地说,我现有的 Express 应用程序应该服务于 React-Admin 并将现有的 API 暴露给它。
查看教程,我没有找到如何操作的信息。它有 yarn start 并在端口 3000 上启动 运行。
我在这里似乎遗漏了一些非常基本的东西。
是否有该设置的示例?
这是我的 Express.js,它已经为 public 文件夹中的 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;
从 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
在我的项目中,我需要一个管理员应用程序。我偶然发现了管理员反应。看起来它确实做了我需要它做的事情。我检查了他们的tutorial。做了一些草稿,并得到它 运行(按照教程)。
但是我有一个具有路由的 Express 应用程序并且 API 已经在工作,而且我还有一个由 Express 应用程序提供服务的 React 应用程序。我想改为提供 Admin-React,换句话说,删除现有的 React 应用程序并开始将 React-Admin 自定义为静态资源。简单地说,我现有的 Express 应用程序应该服务于 React-Admin 并将现有的 API 暴露给它。
查看教程,我没有找到如何操作的信息。它有 yarn start 并在端口 3000 上启动 运行。
我在这里似乎遗漏了一些非常基本的东西。 是否有该设置的示例?
这是我的 Express.js,它已经为 public 文件夹中的 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;
从 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