【问题标题】:Can't get second level routes working in express无法让二级路线在快递中工作
【发布时间】:2015-11-06 16:50:31
【问题描述】:

很抱歉,我对 node 很陌生。我已经坚持了几个小时了。

server.js

app.use(express.static(__dirname + "/public"));

app.get('/', function(req, res){
  res.sendFile(path.resolve(templatesPath + 'index.html'));
});

app.get('*', function(req, res){
  res.sendFile(path.resolve(templatesPath + 'index.html'));
});

index.html 是一个 Angular 应用程序。我的第一级路由使用 Angular 的 HTML5 路由可以正常工作,例如。 “http://lh:3000/staff”或“http://lh:3000

但是如果我添加另一个级别或路由参数,例如“http://lh:3000/staff/”或“http://lh:3000/staff/test”Express 似乎忽略了 express.static,而是使用 get 通配符将我的所有文件转换为 index.html,因此我的分页符。

感谢您的帮助回答者

在二级路由中,它正在加载 index.html 中引用的资源,相对于二级路由。我的临时解决方案是添加: app.use('/files/',express.static(path.join(__dirname + "/public"))); 但我现在意识到最好改变我的解决方案。

【问题讨论】:

    标签: angularjs node.js express


    【解决方案1】:

    staff/test,静态资产位于您的资产文件夹中吗? 如果它们是静态资产,则资产文件夹内的人员/测试路径中必须有一个文件。

    如果它们不是静态资产并且它们是动态内容,请考虑使用express.router,为staff制作一个路由器并将其添加为,

    var staff = express.Router();
    staff.use('/staff', staff)
    
    //this is route handler for /staff/test
    staff.post('/test', function(req, res, next){
      res.json(some-json-content)
    })
    

    【讨论】:

    • 谢谢,我不知道路由器。我现在需要睡觉,但我会在明天研究它并在我想出它时发布我的答案
    【解决方案2】:

    试试这个:

    app.get('*/*', function(req, res){
      res.sendFile(path.resolve(templatesPath + 'index.html'));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2017-08-04
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      相关资源
      最近更新 更多