Я новичок в этом, поэтому прошу прощения, если я сделал какие-то серьезные ошибки. Я создал статическое приложение, которое использует json-сервер и multer / express для загрузки файлов. Он передает данные во внешнем интерфейсе через ajax.
Когда я развертываю приложение на heroku, оно заменяет порты по умолчанию на основе process.env.PORT. Итак, они оба прослушивают один и тот же порт, и, очевидно, это нарушает его.
Я думал о применении обратного прокси-сервера к коду экспресс-мультиплеера (не приводится в примере ниже), однако у json-сервера нет маршрутизации для принятия этого типа данных.
ЕстьВозможно ли, что мне нужно настроить пользовательскую маршрутизацию для JSON-сервера, чтобы разрешить принимать данные, переданные AJAX? если так, то как бы это выглядело. Спасибо
json-server.js
------------------------------------------------
const jsonServer = require('json-server');
const app = jsonServer.create();
const router = jsonServer.router('src/json/userdata.json');
const middlewares = jsonServer.defaults();
const default_port = process.env.PORT || 3000;
app.use(middlewares);
app.use(router);
app.listen(default_port);
express-multer.js
------------------------------------------------
const express = require('express');
const http = require('http');
const multer = require('multer');
const serveIndex = require('serve-index');
const app = express();
const default_host = 'localhost';
const default_port = process.env.PORT || 5000;
const default_folder = 'public/img';
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, default_folder);
},
filename: function(req, file, cb) {
var fieldName = 'file';
req.body[fieldName] ? cb(null, req.body[fieldName]) : cb(null, file.originalname);
}
});
const upload = multer({ storage: storage });
app.use('/' + default_folder, serveIndex(process.cwd() + '/' + default_folder));
app.use('/' + default_folder, express.static(process.cwd() + '/' + default_folder));
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
});
app.post('/', upload.any(), function(req, res) {
console.log('[' + new Date().toISOString() + '] - File uploaded:', req.files[0].path);
res.end();
});
http.createServer(app).listen(default_port, default_host);