Несколько прокси devServer и несколько портов

Мне нужно запросить автоматические маршруты, созданные из https://github.com/o1lab/xmysql на порту 3000 из моего vue.js dev env, работающего на порту 8080.

vue.config.js:

module.exports = {
    devServer: {
        proxy: {
            "/api": {
                target: "http://localhost:80", // Works perfeclty
            },
            "/": {
                target: "http://localhost:80", // Works perfectly
            },
            "/generated": { // Not working
                target: {
                    port: 3000
                },
                secure: false,
                ws: false,
                changeOrigin: true

            }
        },
        hot: true,
        liveReload: true,
    }
};

xmysql params:

xmysql -h localhost -u root -p password -n 3000 -a /generated/ -d myDatabase

Мой vue.js axios получает запрос:

 axios
    .get('/generated/meetings', {
        headers: {
            'Access-Control-Allow-Origin': 'all',
        }
    })
    .then(response => {
        console.log(response)
    })
    .catch(error => {
        console.log(error);
    });

Ошибка:

Cannot GET /generated/meetings

Я могу получить доступ к маршрутам localhost на моем localhost: 3000 в свой навигатор Firefox, и они работают очень хорошо: Json desc

Похоже, прокси не работает, есть идеи?

Я безуспешно пробовал другие параметры vue.config.js:

 devServer: {
        proxy: {
            "/api": {
                target: "http://localhost:80",
                // ,pathRewrite: {'^/api' : ''}
            },
            "/": {
                target: "http://localhost:80",
            },
            "/generated": {
                target: "http://localhost:3000",
                pathRewrite: { '/generated': '' },
                secure: false,
                ws: false,
                changeOrigin: true

            }
        },
        hot: true,
        liveReload: true,
    }

Работает только этот запрос:

 axios
    .get('localhost:3000/generated/meetings', {
        headers: {
            'Access-Control-Allow-Origin': 'all',
        }
    })
    .then(response => {
        console.log(response)
    })
    .catch(error => {
        console.log(error);
    });

Но тогда возникает проблема CORS, и я не могу получить «ответ», даже если он отображается в запросе консоли Firefox, я могу получить только ошибку.


person test1500    schedule 31.10.2020    source источник


Ответы (1)


извините, похоже, что это был / api / конфликт, вызванный общим сервером mongoDb, запущенным / api /, работающим параллельно.

Я получил этот vue.config.js. Теперь мои запросы Mysql будут идти на маршруты / api, а мои запросы mongoDb будут идти на маршруты generic-api, поэтому я могу обрабатывать 2 базы данных в одном приложении vue.js:

module.exports = {
    devServer: {
        proxy: {
        "/api": {
            target: "http://localhost:3000", // This is set for xmysql routes generator https://github.com/o1lab/xmysql

        },
        "/": {
            target: "http://localhost:80", // Serving the vue.js app
        },
        "/generic-api": {
            target: "http://localhost:80", // When using generic-crud.js with mongoDb
        }
    },
        hot: true,
        liveReload: true,
    }
}

И это моя стандартная конфигурация xmysql, теперь:

xmysql -h localhost -u root -p password -n 3000  -d myDatabase

РЕДАКТИРОВАТЬ: НОВИНКА: Хо нет, когда я запускаю NPM RUN BUILD, мои маршруты / api больше не работают в моем рабочем приложении vue.js!

РЕШЕНИЕ: добавлен прокси-сервер NODE EXPRESS, подобный этому, в мой файл узла server.js:

// -------------------------------
// PROXY ALL API ROUTES QUERIES TO PORT 3000 TO USE WITH MYSQL ROUTES GENERATOR https://stackoverflow.com/questions/10435407/proxy-with-express-js
// -------------------------------
var proxy = require('express-proxy-server');
app.use('/api', proxy('http://localhost:3000/api'));

Теперь даже мои запросы к производственному приложению vue.js проксируются на http: // localhost: 3000, поэтому он должен работать на heroku ...

person test1500    schedule 01.11.2020