Express.js на нескольких портах с Heroku - PullRequest
0 голосов
/ 17 октября 2019

Я новичок в этом, поэтому прошу прощения, если я сделал какие-то серьезные ошибки. Я создал статическое приложение, которое использует 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);
...