加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS和Express路由404

发布时间:2020-12-17 18:03:53 所属栏目:安全 来源:网络整理
导读:我有一个以下AngularJS应用程序: angular.module('app',['ngRoute','app.controllers']).config(['$routeProvider',function($routeProvider){ $routeProvider .when('/',{ controller: 'HomeController',templateUrl: 'views/home.html' }) .when('/garage
我有一个以下AngularJS应用程序:

angular.module('app',['ngRoute','app.controllers'])
.config(['$routeProvider',function($routeProvider){
    $routeProvider
        .when('/',{
            controller: 'HomeController',templateUrl: 'views/home.html'
        })
        .when('/garage',{
            controller: 'GarageController',templateUrl: 'views/vehicle.html'
        })
        .otherwise({
            redirectTo: '/'
        });
}])
.config(['$locationProvider',function($locationProvider) {
    $locationProvider.html5Mode(true);
}]);

Node.js是我的后端,它的唯一目的是提供REST api(尚未实现).快速配置如下:

app.use(express.static(path.join(__dirname,'public')));

app.get('*',function(req,res) {
   res.sendFile(__dirname + '/public/index.html');
});

问题是每当我在地址栏中放入一些无效的URL时,就像http:// localhost:3000 / abc请求到达服务器一样.我假设它应该由AngularJS路由处理并重定向到默认的’/’页面.为什么没有发生?
当发生这种情况时,将再次下载所有索引和资产文件的所有应用程序.我想告诉AngularJS – 每当有人输入无效路由时,只需路由到默认路由.这应该只是替换ng-view,而不是再次下载整个index.html.那可能吗?

谢谢

解决方法

不确定这是否有帮助,但这种路由工作得很好.
(app.js)

var routes = require('./routes/index');
var users = require('./routes/users');
var api = require('./routes/api')
var partials = require('./routes/partials')

然后在另一端使用以下代码来获得正在运行的角度路由:

var BabyPadz = angular.module('BabyPadz',["ngResource","ngRoute"]).
    config(['$routeProvider','$locationProvider',function ($routeProvider,$locationProvider) {
            $locationProvider.html5Mode(true);
            $routeProvider
                .when('/',{
                    templateUrl: 'partials/index',controller: 'IndexController'
                })
                .when('/about',{
                    templateUrl: '/partials/about',controller: 'AboutController'
                })
                .when('/contactus',{
                    templateUrl: "partials/contactus",controller: 'ContactController'
                })
                .when('/boompad',{
                    templateUrl: "partials/boompad",controller: "BoomController"
                })

                // route for the about page

                .otherwise({redirectTo: "/test"});
        }
    ]
);

我意识到我也使用ngResource,知道有一些东西在一两年前发生了变化,有些是关于角度的分裂(所以Route等等是一个单独的模块).不确定是否是这种情况.

我有时仍然得到404,但认为这是允许Angular选择路由的服务器端,但是无法完全回答该问题路由(服务器/角度)如何协同工作或优先级是什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读