Ich baue eine App in angularjs mit verschiedenen Zuständen und habe eine $urlRouterProvider.otherwise("/");
hinzugefügt, um Leute umzuleiten, sind sie nicht zu einem Zustand gehen, die ich eingerichtet habe.AngularJS - Redirect wenn URL nicht korrekt ist
Obwohl ich ein Problem habe, wenn sie auf eine URL jenseits der von mir eingerichteten URL gehen. So zum Beispiel der folgende Zustand ist Profil:
.state('profile', {
url: '/profile',
templateUrl: 'partials/profile.html',
controller: 'profileCtrl',
data: {
requiresLogin: true
},
resolve: {
$title: function() { return 'Profile'; }
}
});
Lets sagen, dass ich mit/prof statt/profile zu einer URL gehen war, werde ich eine Umleitung erhalten zu aka Hause ("/").
Hier ist, wo das Problem auftaucht: Wenn ich auf eine URL gehen würde wie folgt:/profile/Test, ich eine Menge Fehler in meiner Konsole (Bild unten)
bekommen zusätzliche Informationen (von Kommentaren):
ich werde auch den Server-seitigen Code zu sehen gebe das Problem dort mit einer Umleitung sein könnte:
// Init Express Web Framework
var express = require('express');
var app = express();
var path = require('path');
// Set view engine to EJS & set views directory
app.set('view engine', 'ejs');
app.set('views', path.resolve(__dirname, 'client', 'views'));
app.use(express.static(path.resolve(__dirname, 'client')));
// Database Connection
var mongoose = require('mongoose');
var configDB = require('./server/config/database.js');
mongoose.connect(configDB.url);
var bodyParser = require('body-parser');
app.use(bodyParser.json());
// Main route
app.get('/', function(req, res){
res.render('index.ejs');
});
// API
var api = express.Router();
require('./server/routes/capture')(api);
app.use('/api', api);
// Set routes to other pages
app.get('/*', function(req, res){
res.render('index.ejs');
});
// Port Settings
app.listen(process.env.PORT || 3000, process.env.IP);
console.log('Listening on port ' + process.env.PORT);
und hier ist mein Arbeitsplatz
Umleiten von URLs, die erhalten umgeleitet nicht aufgeführt sind. URLs, die aufgelistet sind (zum Beispiel/dashboard,/profile, ...) wenn sie etwas zum Link hinzufügen, werden sie nicht umgeleitet. Ich habe diese Fehler gefunden, wenn ich den Controller nicht zum Haupt-HTML hinzugefügt habe, aber das ist genau das Richtige. Ich möchte nicht in der Lage sein, zu diesen Links zu surfen. Alle Links, die nicht in app.js angegeben wurden, sollten umgeleitet werden.
Gibt es eine Möglichkeit, das zu beheben?
EDIT - Added 404:
ich einen Haken 404 in meinem server.js mit diesem Code hinzugefügt:
// catch 404 and forwarding to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
Dies ist das Ergebnis: usualy
Error: Not Found
at /home/ubuntu/workspace/server.js:31:15
at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:312:13)
at /home/ubuntu/workspace/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12)
at next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:271:10)
at jsonParser (/home/ubuntu/workspace/node_modules/body-parser/lib/types/json.js:100:40)
at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:312:13)
at /home/ubuntu/workspace/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12)
at next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:271:10)
at SendStream.error (/home/ubuntu/workspace/node_modules/express/node_modules/serve-static/index.js:120:7)
at emitOne (events.js:77:13)
at SendStream.emit (events.js:169:7)
at SendStream.error (/home/ubuntu/workspace/node_modules/express/node_modules/send/index.js:245:17)
Könnten Sie machen ein Plunkr den Fehler reproduzieren? –
Es wäre nicht wirklich sinnvoll, einen ganzen Plnnr-Code zu erstellen, um dies zu reproduzieren, da es einfach ist. Umleitende URLs, die nicht aufgelistet sind, werden umgeleitet. URLs, die aufgelistet sind (zum Beispiel/dashboard,/profile, ...) wenn sie etwas zum Link hinzufügen, werden sie nicht umgeleitet. Ich habe diese Fehler gefunden, wenn ich den Controller nicht zum Haupt-HTML hinzugefügt habe, aber das ist genau das Richtige. Ich möchte nicht in der Lage sein, zu diesen Links zu surfen. Alle Links, die nicht in app.js angegeben wurden, sollten umgeleitet werden. –
Unexpected Token "<", sind Sie sicher, dass Sie kein abschließendes "<" irgendwo haben? – Walfrat