У меня есть папка env.config
, где у меня есть 3 среды: dev, test и prod.Я также добавил свою настройку в сценарий "start"
в package.json
, и он выглядит следующим образом:
"start": "cross-env NODE_ENV=development node server.js"
Я использую cross-env
для работы с несколькими средами, и в моем server.js
создан прокси.
const express = require('express');
const path = require('path');
const dotenv = require('dotenv');
const proxy = require('http-proxy-middleware');
const bodyParser = require('body-parser');
dotenv.config({
path: path.join(__dirname, 'env.config', `.env.${process.env.NODE_ENV}`),
});
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(`${__dirname}/dist`));
app.get('/*', (req, res, next) => {
if (req.url.indexOf('/api') === 0 || req.url.indexOf('public') > -1) {
return next();
}
// FALLBACK
res.redirect('/');
});
app.use('/api', proxy({
target: `${process.env.API_HOST}`,
changeOrigin: false,
logLevel: 'debug',
pathRewrite: stringPath => stringPath.replace('/api/', ''),
}));
app.listen(process.env.API_PORT_FRONTEND, () => { });
Когда я отлаживаю server.js, я вижу, что у меня есть доступ к правильным переменным .env.Однако, если я запускаю это, мой клиентский сервер не будет работать.И если я добавлю "react-scripts start"
к моей команде "start"
, мой сервер не будет работать вообще, например:
"start": "cross-env NODE_ENV=development node server.js react-scripts start"
Так что мой вопрос: как мне настроить его для одновременной работы обоих?Я знаю, что, возможно, я неправильно понимаю всю концепцию, но если бы кто-то мог сделать это хотя бы немного понятнее, это очень помогло бы:)