2015-04-19 3 views
2

У меня здесь немного ситуация, потому что я не совсем понимаю, как это работает. У меня есть бэкэнд рельсов, сервер rails, запущенный на порту 3000, и у меня есть угловое приложение внутри той же самой папки проекта. This - приложение, а angulr-приложение находится в каталоге ngapp/.Rails Angular grunt-proxy

То, что я пытаюсь сделать, это использовать api из рельсов и визуализировать приложение с помощью angularjs. И используйте grunt вместо звездочек для статических активов сервера.

Проблема, с которой я столкнулся, заключается в том, как проксировать запрос от localhost:9000/api/v1/articles до localhost:3000/api/v1/articles. Когда я пытаюсь отправить запрос ajax запроса, он всегда показывает 404 на localhost:9000/api/v1/articles.

Я не могу понять, чего не хватает в файле Gruntfile.js, потому что ошибки не отображаются ни с помощью grunt, ни с помощью рельсов.

'use strict'; 
module.exports = function (grunt) { 
    grunt.initConfig({ 
    jshint: { 
     src: ['app/**/*.js'], 
     options: { 
     eqeqeq: true, 
     curly: true, 
     laxcomma: true 
     } 
    }, 
    connect: { 
     options: { 
     port: 9000, 
     hostname: 'localhost', 
     livereload: 35729, 
     base: './' 
     }, 
     proxies: [ 
     { 
      context: '/api/v1', 
      host: 'localhost', 
      port: 3000, 
      changeOrigin: true 
     } 
     ], 
     livereload: { 
     options: { 
      middleware: function(connect, options) { 
      if (!Array.isArray(options.base)) { 
       options.base = [options.base]; 
      } 

      // Setup the proxy 
      var middlewares = []; 

      // Serve static files. 
      options.base.forEach(function(base) { 
       middlewares.push(connect.static(base)); 
      }); 

      // Make directory browse-able. 
      var directory = options.directory || options.base[options.base.length - 1]; 
      middlewares.push(connect.directory(directory)); 

      return middlewares; 
      } 
     } 
     } 
    }, 
    watch: { 
     options: { 
     livereload: '<%= connect.options.livereload %>', 
     dateFormat: function(time) { 
      grunt.log.writeln('The watch finished in ' + time + 'ms at' + (new Date()).toString()); 
      grunt.log.writeln('Waiting for more changes...'); 
     } 
     }, 
     files: ['Gruntfile.js', 'app/**/*.js', 'app/**/*.css', 'bower_components/**/*.css'], 
     tasks: ['jshint'] 
    } 
    }); 


    grunt.registerTask('default', ['jshint']); 
    grunt.registerTask('serve', ['default', 'configureProxies', 'connect:livereload', 'watch']); 

    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-connect-proxy'); 
    grunt.loadNpmTasks('grunt-contrib-connect'); 
}; 

ответ

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