2016-03-22 10 views
2

Ich entwickle Winkel app (1.5.2) und in einem Fall haben URL für Funktionszustand alsui-Router (0.2.18) mit Punkt Parameter

http://localhost:3000/payment/1.1/2/3 

folgt Aber ich erhalte eine Fehlermeldung :

Cannot GET /payment/1.1/2/3 

Version von UI-Router - 0.2.18. Ich habe gelesen, dass sie dieses Problem behoben haben, aber für mich funktioniert es nicht. Die gleichen Antworten auf SO helfen mir auch nicht.

Staats Config dafür:

.state('payment', { 
      url: '/payment/:token/:id/:chanel_id', 
      templateUrl: 'app/payment/payment.html', 
      controller: 'PaymentController', 
      controllerAs: 'vm' 
     }); 

Meine server.js Datei:

'use strict'; 

var path = require('path'); 
var gulp = require('gulp'); 
var conf = require('./conf'); 

var browserSync = require('browser-sync'); 
var browserSyncSpa = require('browser-sync-spa'); 

var util = require('util'); 

var proxyMiddleware = require('http-proxy-middleware'); 
var historyApiFallback = require('connect-history-api-fallback'); 

function browserSyncInit(baseDir, browser) { 
    browser = browser === undefined ? 'default' : browser; 

    var routes = null; 
    if(baseDir === conf.paths.src || (util.isArray(baseDir) && baseDir.indexOf(conf.paths.src) !== -1)) { 
    routes = { 
     '/bower_components': 'bower_components' 
    }; 
    } 


    var server = { 
    baseDir: baseDir, 
    routes: routes, 
    middleware: [ historyApiFallback() ] 
    }; 

    browserSync.instance = browserSync.init({ 
    startPath: '/', 
    server: server, 
    browser: browser 
    }); 
} 

browserSync.use(browserSyncSpa({ 
    selector: '[ng-app]'// Only needed for angular apps 
})); 

gulp.task('serve', ['watch'], function() { 
    browserSyncInit([path.join(conf.paths.tmp, '/serve'), conf.paths.src]); 
}); 

gulp.task('serve:dist', ['build'], function() { 
    browserSyncInit(conf.paths.dist); 
}); 

gulp.task('serve:e2e', ['inject'], function() { 
    browserSyncInit([conf.paths.tmp + '/serve', conf.paths.src], []); 
}); 

gulp.task('serve:e2e-dist', ['build'], function() { 
    browserSyncInit(conf.paths.dist, []); 
}); 
+0

haben Sie versucht, einige Werkzeuge wie Postbote zu verwenden oder Curl, um das reine GET /payment1.1/2/3 zuerst zu tun, um zu sehen, ob es funktioniert? – Kossel

+0

komisch, aber mit Postboten funktioniert gut – BordiArt

+0

Ich habe auch mit diesem Problem. Schließlich musste ich die Werte in HTML-Codierung wie '1.1' in' 1% 2E1' ändern. – Priya

Antwort

2

Was ist Ihr Webserver.

Sie müssen alle Anfragen in Ihrer index.html umleiten, wenn die Anfrage keine Datei ist.


Ich glaube, Sie dies in Ihrem Router $ locationProvider.html5Mode hinzufügen muss (true);


Lösung für BrowserSync und Gulp.

Installieren Sie zuerst connect-Geschichte-api-Rückfall:

npm install connect-history-api-fallback --save-dev

Dann bearbeiten Sie Ihre Schluck/server.js und fügen Sie die Middleware:

var historyApiFallback = require('connect-history-api-fallback'); 
var server = { 
    baseDir: baseDir, 
    routes: routes, 
    middleware: [ historyApiFallback() ] 
}; 
+0

Ich benutze Winkel-Schluck-Generator von Yeoman. Verwenden Sie browser-sync-spa (https://github.com/shakyShane/browser-sync-spa) – BordiArt

+0

Können Sie mir Ihre Router-Datei senden. Ich denke, Sie müssen dies in Ihrem Router hinzufügen $ locationProvider.html5Mode (true); –

+0

Ich habe html5mode – BordiArt

Verwandte Themen