Узел с Vue, различными портами для запросов и API


Узел с Vue, различными портами для запросов и API

13.02.2020 04:40:19 Просмотров 74 Источник

У меня есть проект, основанный на node и имеющий Vue в качестве переднего плана.

В моем приложении.JS файл в узле у меня есть

if(process.env.NODE_ENV === 'production'){
    //static folder
    app.use(express.static(path.join(__dirname,'public'))); 
    //handle SPA
    app.get(/.*/, (req, res)=>{
        res.sendFile(__dirname + '/public/index.html');
    });
}

и затем

const port = process.env.PORT || 4000;
app.listen(port, ()=>{
    console.log('Server runs on port ', port);
});

Таким образом, узел прослушивает порт 4000, и все входящие запросы (от порта 4000) идут в '/public/index.html', чтобы получить обслуживание от vue

В моем vue.config.jsу меня есть

const path = require('path');

module.exports = {
    outputDir : path.resolve(__dirname, '..public'),
    devServer:{
        proxy:{
            '/*':{
                target:'http://localhost:5000'
            }
        }
    }
}

Пока все работает нормально, но, пожалуйста, помогите мне понять следующее

Как я могу иметь узел, слушающий порт (например, 80), а затем все остальные конечные точки api узла в другом порту (например, 4000) ?

Я хочу, чтобы все входящие запросы шли в порт 80, а затем все еще шли в '/public/index.html', так что Vue может взять на себя.

Но, конечные точки узла, которые Vue использует для получения и отправки данных, я хочу, чтобы они все еще находились в порту 4000, const basicUrl = 'http://awesomeness:4000/';

Как я могу это сделать ?

Спасибо

У вопроса есть решение - Посмотреть?

Ответы - Узел с Vue, различными портами для запросов и API / Node with Vue, different ports for requests and API

mJehanno

13.02.2020 04:50:36

Вам может потребоваться создать приложение 2 express, как показано в ссылке ниже :

NodeJS Express-отдельные маршруты по двум портам

Первый прослушает порт 80 и вернет индекс.HTML-файл.

Другой будет слушать 4000 и обрабатывать запрос из вашего приложения Vue.

https://stackoverflow.com/questions/60209220/node-with-vue-different-ports-for-requests-and-api/60209424#comment106496883_60209424
Это хорошая идея, если подумать, но как насчет одного http-сервера с двумя портами? Может ли НОД сделать это каким-то образом?
https://stackoverflow.com/questions/60209220/node-with-vue-different-ports-for-requests-and-api/60209424#comment106497022_60209424
похоже, что servr может прослушивать только один порт, поэтому вам нужно создавать новый сервер (базовый узел js)/приложение (expressJs) каждый раз, когда вы хотите обрабатывать другой порт. Но вы можете создать их в одном файле. Таким образом, вы можете иметь один скрипт nodeJs, который может обрабатывать несколько портов через различные "серверы"/"приложения".
Помочь в развитии проекта:
Закрыть X