2016-12-03 106 views
0

当直接访问/登录时,我的AngularJS应用程序不会路由到/登录。如果我第一次访问/然后路由/到/登录,它将路由到/登录。本地路由工作,而不是在Heroku服务器上

它正在处理我的本地环境,但不能与Heroku服务器一起工作。有没有必要在Heroku服务器上配置一些设置?

我正在使用angular-ui-router在整个应用程序中路由到不同的状态。

我app.js配置片段看起来是这样的:

angular.module('app', [ 
angularUiRouter 
]) 
.config(($stateProvider) => { 
    "ngInject"; 

    $stateProvider 
     .state("home", { 
      url: "/", 
      template: "<home></home>" 
     }) 
     .state("login", { 
      url: "/login", 
      template: "<login></login>" 
     }); 
}) 
+0

是否使用'html5mode'从您的网址删除哈希刘海?您可能在本地运行的Node Web服务器为您处理该配置,但在Heroku上则不然。 – mcranston18

+0

我实际上正在设置 $ locationProvider.html5Mode(true).hashPrefix('!'); –

回答

1

回答我的问题。

由于此应用程序的设置使用MEAN堆栈,我们还必须添加从服务器端到客户端的路由。

对于所有模板AngularJS必须有从快速路由到AngularJS到index.html的

对角创建我们需要得到的请求和响应 时发送index.html的所有模板和工艺路线我们使用angularjs stateProvider在Angularjs中路由..,我们还必须从服务器端添加路由到/dist/index.html。 $ locationProvider.html5Mode(true).hashPrefix('!');已在app.js中定义的AngularJS侧

我Server.js文件的一个片段:

var express = require('express'); 
var app = express(); 

app.use(express.static(__dirname + '/dist')); 
app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/dist/index.html'); 
}); 
app.get('/login', function(req, res){ 
    res.sendFile(__dirname + '/dist/index.html'); 
}); 
相关问题