我在具有不同状态的angularjs中构建应用程序,并添加了$urlRouterProvider.otherwise("/");
来重定向人员,他们不会进入我已设置的状态。
虽然我在访问超出我设置的网址时遇到问题。 例如,以下状态是配置文件:
.state('profile', {
url: '/profile',
templateUrl: 'partials/profile.html',
controller: 'profileCtrl',
data: {
requiresLogin: true
},
resolve: {
$title: function() { return 'Profile'; }
}
});
让我们说我要用/ prof而不是/ profile转到网址,我将重定向回家#(" /")。
问题出现在哪里:如果我按照以下方式转到网址:/ profile / test,我的控制台会出现很多错误(图片如下)
额外信息(来自评论):
我还会给服务器端代码看一下重定向可能存在的问题:
// 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);
这是我的工作区
重定向未列出的重定向网址。列出的网址(例如/ dashboard / / profile,...)在向链接添加内容时,它们不会被重定向。当我没有将控制器添加到主html时,我遇到了这些错误,但这只是事情..我不想冲浪到这些链接。所有未在app.js中声明的链接都应重定向。
有什么方法可以解决这个问题吗?
编辑 - 添加404:
我使用以下代码在server.js中添加了一个catch 404:
// catch 404 and forwarding to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
结果如下:
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)
答案 0 :(得分:0)
Unexpected token "<"
通常是指html内容而不是js
angular is not defined
表示您的angular.js
甚至无法加载。
检查浏览器中的服务器和Network
标签
用于加载js脚本的网址是什么?
浏览器对这些网址的响应是什么?
修正js url更正并且错误将消失。
您的.htaccess
也可能出错
检查您是否没有重定向其中存在的静态文件
它是-f
指令中的RewriteRule
标志。
我看看你的错误动画:)
您的脚本定义为src="lib/angular.js"
此网址是相对的,在/profile
页面上将为/profile/lib/...
。
您需要的是绝对网址:src="/lib/angular.js"