Приложение Nodejs не может подключиться к приложению angular на порту 3000, если приложение angular размещено на удаленной машине. - PullRequest
0 голосов
/ 07 сентября 2018

Приложение Nodejs не может подключиться к угловому приложению через порт 3000, если угловое приложение размещено на удаленном компьютере.

Но может подключиться, если оба приложения (nodejs и angular) размещены на одном компьютере.Какую конфигурацию мне не хватает?Поделиться ниже кода приложения сервера nodejs.

var OrderServer = /** @class */ (function () {
    function OrderServer() {
        this._orderService = new order_service_1.OrderService();
        this._pushNotificationSenderService = new push_notification_sender_service_1.PushNotificationSenderService();
        this.createApp();
        this.defineApiRoutes();
        this.config();
        this.createServer();
        this.sockets();
        this.listen();
    }
    OrderServer.prototype.getApp = function () {
        return this.app;
    };
    OrderServer.prototype.createApp = function () {
        this.app = express();
        this.app.use(function (req, res, next) {
            res.header("Access-Control-Allow-Origin", "http://localhost:8080");
            res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
            res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
            next();
        });
        this.app.use(express.json());
    };
    OrderServer.prototype.defineApiRoutes = function () {
        this.app.route('/api/notifications')
            .post(add_push_subscriber_1.addPushSubscriber);
    };
    OrderServer.prototype.config = function () {
        this.port = process.env.PORT || OrderServer.PORT;
    };
    OrderServer.prototype.createServer = function () {
        this.server = http_1.createServer(this.app);
    };
    OrderServer.prototype.sockets = function () {
        this.io = socketIo(this.server);
    };
    OrderServer.prototype.listen = function () {
        var _this = this;
        this.server.listen(this.port, function () {
            console.log('Running server on port %s', _this.port);
        });
        this.io.on('connect', function (socket) {
            console.log('Connected client on port %s.', _this.port);
            setInterval(function () {
                _this._orderService.getNewNProcessingOrders(_this.io);
                //this._pushNotificationSenderService.sendNotification();
            }, 180000);
        });
    };
    OrderServer.PORT = 3000;
    return OrderServer;
}());
exports.OrderServer = OrderServer;

1 Ответ

0 голосов
/ 07 сентября 2018

Создайте файл proxy.conf.json в корневой папке углового проекта.

AngularCLI Документация о прокси.

Пример содержания:

{
  "proxy": {
    "target": "https://localhost:3000/",
    "secure": false,
    "pathRewrite": {
      "^proxy": ""
    }
  }
}

Затем в файлах среды для углового приложения angular/root/folder/environments/ создайте базу URL для development (environment.ts) и production (environment.prod.ts) и используйте этот префикс везде, где вы хотите получить доступ к бэкэнду .

Пример конфигурации среды :

export const environment = {
  production: false,
  backendBaseKey: '/proxy/'
* *} 1 022;

Пример углового обслуживания:

// Depending on dev/prod the according env is imported
import {environment} from "../../environments/environment";

[...]

fetch(){
  return this.http.get(environment.backendBaseKey+'/my-endpoint');
}

Затем при работе локально переходите по

ng serve --proxy-config proxy.conf.json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...