【问题标题】:can't load index after refresh route params刷新路由参数后无法加载索引
【发布时间】:2017-02-25 19:33:29
【问题描述】:

我为这样的网页创建路由

angular.module("ui",[]).config(function($routeProvider,$locationProvider,$httpProvider)
{
  $routeProvider.when('/home',
  {
     templateUrl: 'home.html'

  })
  .when('/login',
  {
    templateUrl: 'login.html'

  })
  .when('/sign_in',
  {
    templateUrl: 'create_account.html'

  })
  .when('/profil',
  {
    templateUrl: 'profil.html'

  })
  .when('/note/:id',
  {
    templateUrl: 'view_note.html'

  })
  .when('/editNote/:id',
  {
    templateUrl: 'edit_note.html'

  })
  .otherwise({
    redirectTo: '/home'
  });
  $locationProvider.html5Mode(true);
});

和服务器端代码(expressjs)

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

所以我的所有路由配置都运行良好,但是当我尝试刷新页面时,几乎所有页面都运行正常,除了带有/editNote/:id 路由配置的页面。那么如何解决这个服务器端路由问题(expressjs)

【问题讨论】:

  • 那么,错误是什么?
  • 您不必为每条路径都设置新路径。只留一个,设置为*(快递)
  • @Patryk 我已经尝试将 '/*' 更改为 '*',但仍然无法正常工作

标签: javascript angularjs node.js express


【解决方案1】:

在服务器文件上添加:

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

删除

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

【讨论】:

  • 即使你删除了所有的'/*',?碰巧我从来没有使用过这样的网址。
  • 我终于可以找出真正的问题,它导致猫鼬路线与 express/angularjs 路线之间的路线相同。所以我更改了 angularjs 路由名称
【解决方案2】:

我终于可以找出真正的问题,它导致猫鼬路由和 express/angularjs 路由之间的路由名称相同。所以我更改了 angularjs 路由名称

【讨论】:

    猜你喜欢
    • 2016-10-28
    • 2018-08-17
    • 2017-02-25
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多