0

У меня есть YEOMAN углового приложение, я настроил grunt-connect-proxy в Gruntfile.js так:ngResource не подключается к прокси

module.exports = function (grunt) { 
    grunt.loadNpmTasks('grunt-connect-proxy'); 

[...] 

connect: { 
    options: { 
    port: 9000, 
    // Change this to '0.0.0.0' to access the server from outside. 
    hostname: 'localhost', 
    livereload: 35729 
    }, 
    dev: { 
    proxies: [ 
    { 
     context: '/api/v1', 
     host: '127.0.0.1', 
     port: 3000, 
     https: false, 
    } 
    ] 
    }, 
    pro: { 
    appendProxies: false, 
    proxies: [{ 
     context: '/api', 
     host: 'example.org' 
    }] 
    }, 
    livereload: { 
    options: { 
     open: true, 
     middleware: function (connect) { 
     return [ 
      require('grunt-connect-proxy/lib/utils').proxyRequest, 
      connect.static('.tmp'), 
      connect().use(
      '/bower_components', 
      connect.static('./bower_components') 
     ), 
      connect().use(
      '/app/styles', 
      connect.static('./app/styles') 
     ), 
      connect.static(appConfig.app) 
     ]; 
     } 
    } 
    }, 
    test: { 
    options: { 
     port: 9001, 
     middleware: function (connect) { 
     return [ 
      connect.static('.tmp'), 
      connect.static('test'), 
      connect().use(
      '/bower_components', 
      connect.static('./bower_components') 
     ), 
      connect.static(appConfig.app) 
     ]; 
     } 
    } 
    }, 
    dist: { 
    options: { 
     open: true, 
     base: '<%= yeoman.dist %>' 
    } 
    } 
}, 

[...] 

grunt.registerTask('serve', 'Compile then start a connect web server', function (target) { 
if (target === 'dist') { 
    return grunt.task.run(['build', 'connect:dist:keepalive']); 
} 

    grunt.task.run([ 
    'clean:server', 
    'wiredep', 
    'concurrent:server', 
    'postcss:server', 
    'configureProxies:dev', 
    'connect:livereload', 
    'watch' 
    ]); 
}); 


grunt.registerTask('build', [ 
    'clean:dist', 
    'configureProxies:pro', 
    'wiredep', 
    'useminPrepare', 
    'concurrent:dist', 
    'postcss', 
    'ngtemplates', 
    'concat', 
    'ngAnnotate', 
    'copy:dist', 
    'cdnify', 
    'cssmin', 
    'uglify', 
    'filerev', 
    'usemin', 
    'htmlmin' 
]); 

Я получил это в угловой консоли:

Running "configureProxies:dev" (configureProxies) task 
Proxy created for: /api/v1 to 127.0.0.1:3000 

моего ngResource:

'use strict'; 

/** 
* @ngdoc service 
* @name doMasApp.Client 
* @description 
* # Client 
* Service in the doMasApp. 
*/ 
angular.module('doMasApp') 
.factory('Client', [ 
    '$resource', 
    function ($resource) { 
     var client = $resource(
      '/clients/:id', 
      { id: '@id' }, 
      { 
      query: { isArray: false }, 
      update: { method: 'PUT' } 
      }); 
     return client; 
    }]) 
; 

но когда я пытаюсь подключиться к серверу и получить ресурс, я получил thi с:

GET http://localhost:9000/clients 404 (Not Found) 

, пожалуйста, помогите !!!

+0

Если вы пропустили этот 'http: // localhost: 9000/clients' прямо в свой URL-адрес браузера, это сработает? – AlainIb

+0

Я решил это, но я не знаю, как вставить ответ, я должен был включить контекст прокси-сервера в заводском URL-адресе. – Yaser

+0

есть кнопка в нижней части страницы с чем-то вроде «ответьте на свой вопрос», – AlainIb

ответ

0

завод URL должен быть такой:

angular.module('doMasApp') 
.factory('Client', [ 
    '$resource', 
    function ($resource) { 
     var client = $resource(
      '/aoi/v1/clients/:id', 
      { id: '@id' }, 
      { 
      query: { isArray: false }, 
      update: { method: 'PUT' } 
      }); 
     return client; 
    }]) 
; 

контекст прокси должен быть добавлен к заводской URL.

Смежные вопросы