У меня есть веб-приложение MERN с express-session
, которое я пытаюсь развернуть на heroku.Я настроил внутренний запрос, используя прокси, установив прокси в файле package.json
.Он работает так, как должен, когда и интерфейсная часть, и фоновая часть работают локально на localhost
.
Когда я развертываю серверную часть на heroku, то после каждого обновления браузера экспресс-сессия создаетновый сеанс / документ в mongodb.
После долгих отладок выяснилось, что установка axios.defaults.baseURL
в URL-адресе сервера вызывала проблему.(Я до сих пор не знаю, почему.)
По-видимому, установка прокси в package.json
работает только для разработки, потому что, когда я развертываю приложение, API-интерфейс вызывается из внешнего URL-адреса.Поэтому во время разработки, когда все работает на локальном хосте, а прокси установлен на package.json
, тогда все работает хорошо.
Проблема заключается в том, что, когда я устанавливаю axios.defaults.baseURL
.Когда я это делаю, то после каждой перезагрузки страницы сеанс воссоздается.
Как правильно подключить интерфейс к серверу?
Session.js
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const mongoose = require('mongoose');
module.exports = function(app) {
var sess = {
secret: 'mySecret',
cookie: { token: null },
saveUninitialized: false,
resave: true,
store: new MongoStore({ mongooseConnection: mongoose.connection })
};
if (app.get('env') === 'production') {
app.set('trust proxy', 1);
sess.cookie.secure = true;
}
app.use(session(sess));
};
Route.js
module.exports = function(app) {
app.use(cors());
app.use(helmet());
require('../middleware/session')(app);
// Other routes...
};