expressjs的玉路径分辨率

时间:2015-11-02 17:20:54

标签: node.js express web pug

背景信息:我正在开发一个用于快递的网络应用程序。目前,我在一个目录中拥有所有视图。我想构建我的views文件夹以包含多个目录以将视图组合在一起。问题是,当我这样做时,我的路径搞砸了。例如,如果我有一个dir结构,如:

views
->photos
-->search.jade
-->stats.jade
layout.jade

如果我先点击统计信息链接,然后点击搜索链接,我会收到错误消息,说明找不到照片/照片/搜索'。我认为这与我从照片目录中加载统计数据这一事实有关,因为我认为href是相对的,它会以某种方式将额外的照片添加到dir路径。我在API文档和在线阅读,没有任何信息。有人可以对此有所了解吗?

我的统计信息或搜索文件中包含extends ../layout。这是我的layout.jade的样子。

doctype html
html(lang='en')
  head
    link(rel='stylesheet', href='/css/style.css')
    block header
  body
    // Navigation
    nav.navbar.navbar-inverse.navbar-fixed-top(role='navigation')
      .container
        // Brand and toggle get grouped for better mobile display
        .navbar-header
          button.navbar-toggle(type='button', data-toggle='collapse', data-target='socialid-nav')
            span.sr-only Toggle navigation
            span.icon-bar
            span.icon-bar
            span.icon-bar
          a.navbar-brand(href='#') HOME
        // Collect the nav links, forms, and other content for toggling
        .collapse.navbar-collapse(id='app-nav')
          ul.nav.navbar-nav
            li
              a(href='/home') Home
            if user
                li
                  a(href='photos/search') Search
                li
                  a(href='photos/stats') Stats
                li
                  a(href='/logs') Search Logs
                li
                  a(href='#') Logged in as: #{user.username}(#{userRole})            
                li
                  a(href='/signout') Sign Out
        // /.navbar-collapse
      // /.container
    // Page Content
    block content

    // Footer
    footer
      .row
        .col-lg-12
          p Copyright © SOCIAL-ID 2014

    block scripts

1 个答案:

答案 0 :(得分:0)

所以,我终于找到了最简单的修复方法,结果发现这只是一个错字。我将代码更改为:

li
  a(href='/photos/search') Search
li
  a(href='/photos/stats') Stats

我想href路径开头缺少的'/'字符告诉浏览器相对于当前的静态文件目录。添加它会告诉浏览器相对于公共目录。