Livereload Html5 Pushstate与AngularJS、ui.Router和yeoman

Livereload Html5 Pushstate与AngularJS、ui.Router和yeoman,html,mod-rewrite,angularjs-directive,pushstate,connect-modrewrite,Html,Mod Rewrite,Angularjs Directive,Pushstate,Connect Modrewrite,我想用我的angular js应用程序修复livereload。我正在使用带有html5推送状态的yoeman ui路由器 a必须做什么?索引 对于搜索引擎,您必须将以下内容添加到index.html的 <meta name="fragment" content="!"> <base href="/"> 中间件 这个问题的解决方案是采用connect modrewrite中间件 在yeomanfolder中的控制台中安装带有节点packetmanager的中间件 npm

我想用我的angular js应用程序修复livereload。我正在使用带有html5推送状态的yoeman ui路由器

a必须做什么?

索引 对于搜索引擎,您必须将以下内容添加到index.html的

<meta name="fragment" content="!">
<base href="/">
中间件

这个问题的解决方案是采用connect modrewrite中间件

在yeomanfolder中的控制台中安装带有节点packetmanager的中间件

npm install connect-modrewrite
然后调整Gruntfile.js

var modRewrite = require('connect-modrewrite');


livereload: {
    options: {
      open: true,
      base: [
        '.tmp',
        '<%= yeoman.app %>'
      ],
      middleware: function (connect, options) {
        var middlewares = [];

        middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]'])); //Matches everything that does not contain a '.' (period)
        options.base.forEach(function (base) {
          middlewares.push(connect.static(base));
        });

        middlewares.push(
          connect.static('.tmp'),
          connect().use(
            '/bower_components',
            connect.static('./bower_components')
          )
        );

        return middlewares;
      }
    }
  },

我得到一个错误:
TypeError:无法读取grunt.initConfig.browserSync.livereload.options.middleware中未定义的属性'forEach'
,有问题的代码行是
options.base.forEach(function(base){
,此解决方案与更高版本不同吗?(2015年11月)
var modRewrite = require('connect-modrewrite');


livereload: {
    options: {
      open: true,
      base: [
        '.tmp',
        '<%= yeoman.app %>'
      ],
      middleware: function (connect, options) {
        var middlewares = [];

        middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]'])); //Matches everything that does not contain a '.' (period)
        options.base.forEach(function (base) {
          middlewares.push(connect.static(base));
        });

        middlewares.push(
          connect.static('.tmp'),
          connect().use(
            '/bower_components',
            connect.static('./bower_components')
          )
        );

        return middlewares;
      }
    }
  },
grunt serve