Wie kann man gulp-connect anweisen, index.html unabhängig von der URL zu öffnen?
Frage
Ich habe folgende Schluckaufgabe:
gulp.task('connect', function() {
connect.server({
root: __dirname,
livereload: true
});
});
und die folgenden Angular-Routen:
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: "/"
});
});
Wenn ich besuche /
Alles funktioniert einwandfrei (das Dashboard erscheint).
Aber zu Besuch /advertiser
führt zu „404 – Cannot GET /advertiser“.
Meine Haupt-Angular-Datei ist index.html
, die ordnungsgemäß geöffnet ist /
, aber nicht für /advertiser
.
Wie könnte ich Gulp sagen, er solle öffnen? index.html
unabhängig von der URL?
Lösung
Du kannst den ... benutzen middleware
Option zu verwenden Die connect-history-api-fallback
Middleware.Sobald Sie das Fallback installiert und benötigt haben, fügen Sie es wie folgt hinzu:
gulp.task('connect', function() {
connect.server({
root: __dirname,
livereload: true,
middleware: function(connect, opt) {
return [ historyApiFallback ];
}
});
});
Andere Tipps
Alternativ können Sie verwenden gulp-connect
eigene Option aufgerufen fallback
dafür:
gulp.task('connect', function() {
connect.server({
root: 'path/',
livereload: true,
fallback: 'path/index.html'
});
});
Es ist kein weiteres Paket erforderlich.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow