How to tell gulp-connect to open index.html regardless of the URL?

谁说胖子不能爱 提交于 2019-12-04 15:48:35

问题


I have the following gulp task:

gulp.task('connect', function() {
  connect.server({
    root: __dirname,
    livereload: true
  });
});

and the following Angular routes:

angular.module("MyApp", ["ngRoute"]).config(function($routeProvider, $locationProvider) {
  $locationProvider.html5Mode(true);

  $routeProvider
    .when("/", {
      controller: "DashboardCtrl",
      templateUrl: "templates/dashboard.html"
    })
    .when("/advertiser", {
      controller: "AdvertiserCtrl",
      templateUrl: "templates/advertiser.html"
    })
    .otherwise({
      redirectTo: "/"
    });
});

When I visit / all works fine (the Dashboard appears).

But, visiting /advertiser results in "404 - Cannot GET /advertiser".

My main Angular file is index.html, which is opened properly for /, but not for /advertiser.

How could I tell Gulp to open index.html regardless of the URL?


回答1:


You can use the middleware option to use the connect-history-api-fallback middleware. Once you've installed and required the fallback, you add it like this:

gulp.task('connect', function() {
  connect.server({
    root: __dirname,
    livereload: true,

    middleware: function(connect, opt) {
      return [ historyApiFallback ];
    }

  });
});



回答2:


Alternatively you can use gulp-connect own option called fallback for that:

gulp.task('connect', function() {
  connect.server({
    root: 'path/',
    livereload: true,
    fallback: 'path/index.html'
  });
});

No need for another package.



来源:https://stackoverflow.com/questions/23013353/how-to-tell-gulp-connect-to-open-index-html-regardless-of-the-url

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!