Как устранить ошибку 404 из-за неправильно настроенных настроек grunt-connect-proxy в Gruntfile.js?

Предыстория:

Я пытаюсь подключить свой экземпляр сервера grunt к моей службе API, работающей на том же компьютере по адресу localhost:8080/api/.

В настоящее время для этого используется grunt-connect-proxy.

Проблема/вопрос:

http://localhost:9000/api/user-profile/ Failed to load resource: the server responded with a status of 404 (Not Found)

Есть ли ошибка в моей конфигурации (ниже), которая препятствует перенаправлению запроса /api на прокси-сервер по адресу localhost:8080?

Мои настройки (Gruntfile.js):

var proxySnippet = require('grunt-connect-proxy/lib/utils').proxyRequest;

...

    // Grunt configuration
    grunt.initConfig({

        // Project settings
        someApp: appConfig,

        // The grunt server settings
        connect: {
            options: {
                port: 9000,
                hostname: 'localhost',
                livereload: 35729
            },
            server: {
                proxies: [
                    {
                        context: '/api',
                        host: 'localhost',
                        port: 8080,
                        changeOrigin: true
                    }
                ]
            },
            livereload: {
                options: {
                    open: true,
                    middleware: function (connect) {
                        return [
                            proxySnippet,
                            connect.static('.tmp'),
                            connect().use(
                                '/bower_components',
                                connect.static('./bower_components')
                            ),
                            connect.static(appConfig.app),
                        ];
                    }
                }
            },
            main: {
                options: {
                    open: true,
                    base: '<%= homer.main %>'
                }
            }
        }

...

    grunt.registerTask('live', [
        'clean:server',
        'copy:styles',
        'configureProxies',
        'connect:livereload',
        'watch'
    ]);

    grunt.registerTask('server', [
        'build',
        'connect:main:keepalive'
    ]);

person Lindauson    schedule 27.06.2015    source источник
comment
Не уверен, но пытались ли вы добавить цель подключения к вашему configureProxies в зарегистрированной задаче live. Вот так: configureProxies:connect:server ?   -  person DavidDomain    schedule 27.06.2015
comment
Извините, я понял это и не увидел вашего ответа, когда отправил ответ. Да, указать цель подключения было проблемой. Хотя по какой-то причине ваш фрагмент не работает напрямую. Вместо этого я использую configureProxies:server или (что я на самом деле сделал, чтобы решить эту проблему) полностью удаляю статическую цель, чтобы я мог просто использовать 'configureProxies', ... .   -  person Lindauson    schedule 28.06.2015
comment
Ничего страшного, по крайней мере, ты разобрался. Я не уверен, но если вы можете, вы должны принять свой собственный ответ. ;-)   -  person DavidDomain    schedule 28.06.2015


Ответы (1)


Укажите цель подключения (в данном случае «сервер») в задаче configureProxies.

grunt.registerTask('live', function (target) {
    grunt.task.run([
    'clean:server',
    'copy:styles',
    'configureProxies:server',
    'connect:livereload',
    'watch'
    ]);
});
person Lindauson    schedule 27.06.2015