2014-02-07 4 views
3

Я использую Rails для моего API, AngularJS на передней панели, и у меня возникают некоторые проблемы с тем, чтобы работать с прокси-сервером.Grunt Livereload + Grunt Connect Proxy

Вот отрывок из моего gruntfile:

connect: { 
     options: { 
     port: 9000, 
     // Change this to '0.0.0.0' to access the server from outside. 
     hostname: 'localhost', 
     livereload: 35729 
     }, 
     proxies: [ 
     { 
      context: '/api', 
      host: 'localhost', 
      port: 3000 
     } 
     ], 
     livereload: { 
     options: { 
      open: true, 
      base: [ 
      '.tmp', 
      '<%= yeoman.app %>' 
      ], 
      middleware: function (connect, options) { 
      var middlewares = []; 
      var directory = options.directory || options.base[options.base.length - 1]; 

      // enable Angular's HTML5 mode 
      middlewares.push(modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png$ /index.html [L]'])); 

      if (!Array.isArray(options.base)) { 
       options.base = [options.base]; 
      } 
      options.base.forEach(function(base) { 
       // Serve static files. 
       middlewares.push(connect.static(base)); 
      }); 

      // Make directory browse-able. 
      middlewares.push(connect.directory(directory)); 

      return middlewares; 
      } 
     } 
     }, 
     test: { 
     options: { 
      port: 9001, 
      base: [ 
      '.tmp', 
      'test', 
      '<%= yeoman.app %>' 
      ] 
     } 
     }, 
     dist: { 
     options: { 
      base: '<%= yeoman.dist %>' 
     } 
     } 
    } 

Если я хрюкать построить "все работает отлично - от localhost:3000

Однако если я хрюкать служить" открывает окно, через 127.0.0.1:9000 и I получите 404 ко всем моим вызовам API.

Также под служить его коверкая мои фоновые изображения из файла CSS я получаю это предупреждение:

Resource interpreted as Image but transferred with MIME type text/html: "http://127.0.0.1:9000/images/RBP_BG.jpg" 

Я не сделал это раньше - поэтому вероятность, что я делаю это все неправильно.

ответ

5

Мне не нравится слишком много кода в вашей конфигурации connect.livereload.middleware.
Это все, что нужно?

Посмотрите на this commit - chore(yeoman-gruntfile-update): configured grunt-connect-proxy в некоторых моих проектах.

  • Бэкэнд Джанго
  • порты: интерфейс: 9000, Серверный: 8000
  • generator-angular был v.0.6.0 при создании проекта
  • моей конфигурации connect.livereload.middleware была основана на: https://stackoverflow.com/a/19403176/1432478
+0

спасибо за размещение этого примера кода для хрюкать-подключения прокси –

+0

Вы спасти мою жизнь, чувак! –

3

Это старое сообщение, но, пожалуйста, убедитесь, что вы фактически инициализируете прокси-сервер в задаче подачи grunt, вызывая configureProxies перед линией загрузки.

grunt.task.run([ 
    'clean:server', 
    'bower-install', 
    'concurrent:server', 
    'autoprefixer', 
    'configureProxies', 
    'connect:livereload', 
    'watch' 
]); 

Должен работать после этого.

0

У меня схожая проблема с вами, но я не использую йоман.

Мое решение - добавить задачу configureProxies.

это мои задачи:

grunt.registerTask ('служить', [ 'подключения: LiveReload', '', configureProxies 'разомкнут: сервер', 'часы']);

и «connect: livereload», «configureProxies» - после моего теста порядок этих двух задач не повлияет на результаты.

github grunt-connect-proxy

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