Дублирование свойства данных в литерале объекта запрещено в строгом режиме grunt-connect-proxy

0

Я следую учебному пособию Tutsplus, в котором заголовки "Hands on Angularjs", в учебном пособии, инструктор использует пакет grunt-connect-proxy для перенаправления запросов ajax на сервер rails, работающий на localhost: 3000, но я думаю, что учебник старый и на этой конкретной версии плагин linuxoad для grunt-contrib-connect не использовал функцию промежуточного программного обеспечения, и теперь в текущей версии функция pusheload использует промежуточное программное обеспечение, которое приводит меня к ошибке:

>> SyntaxError: /Applications/MAMP/htdocs/savage-worlds/Gruntfile.js:113
>>           middleware: function (connect) {
>>           ^^^^^^^^^^
>> Duplicate data property in object literal not allowed in strict mode

Это задача файла grunt

// The actual grunt server settings
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: {
        middleware: function (connect, options) {
          if (!Array.isArray(options.base)) {
              options.base = [options.base];
          }

          // Setup the proxy
          var middlewares = [require('grunt-connect-proxy/lib/utils').proxyRequest];

          // 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;
      },
      open: true,
      middleware: function (connect) {
        return [
          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 %>'
    }
  }
},

Любая помощь будет оценена!

  • 0
    Можете ли вы вставить код для задачи gruntfile?
  • 0
    @br3w5 br3w5 это главная задача
Теги:
grunt-connect-proxy

1 ответ

1
Лучший ответ

Ошибка, которую вы получаете, является ошибкой jslint. В нем указывается, в чем проблема: вы не можете использовать дублирующие свойства данных в объектном литерале.

В вашем файле grunt у вас есть задача с дублирующими свойствами, называемая middleware в параметрах функции загрузки. Поэтому вам нужно включить любой код промежуточного кода в одно свойство.

Я не полностью знаком с функцией "печенье", но вы должны учесть весь свой код промежуточного программного обеспечения для работы с пером в одном методе. Он также выглядит как middlewares.push(connect.static(base)); делает все, что делает второй метод дублирования промежуточного программного обеспечения.

livereload: {
    options: {
        middleware: function (connect, options) {
          if (!Array.isArray(options.base)) {
              options.base = [options.base];
          }

          // Setup the proxy
          var middlewares = [require('grunt-connect-proxy/lib/utils').proxyRequest];

          // 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;
      },
    }
  }

Если вы обнаружите, что некоторые статические активы отсутствуют, вы можете нажать их в массив middlewares:

middlewares.push((connect.static('./bower_components'))
  • 0
    Я попробовал это как, но не сработало,
  • 0
    // Служим статическим файлам. options.base.forEach (function (base) {middlewares.push (connect.static ('. tmp')); middlewares.push (connect.static ('./ bower_components')); middlewares.push (connect.static ( './app/styles'));});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню