快速路由“/”

Express Routing "/"

在 express 中,当定义我的索引路由时,我使用“/”(有效),但是,我试图使根可配置,所以我尝试了以下操作:

var root = ""; // can be whatever, but is sometimes empty
app.get(path.join(root, ""), ...);

当我启动服务器(并导航到 'index')时,出现错误; “Cannot GET /”,但这不就是“/”吗?它们有什么不同?

为什么 "/" 有效而 path.join("", "") 无效?

path.join("", "")returns .。所以它等同于做 app.get('.', ...); 不匹配 /.

的请求

您可以添加一个检查,以便 root 始终以前导正斜杠开头:

var root = ""; // can be whatever, but is sometimes empty
if (root[0] !== '/')
  root = '/' + root;
app.get(path.join(root, ""), ...);

需要注意的一件事是目前 path.join() 将使用特定于平台的路径分隔符行为。因此,如果您使用 Windows,/ 将转换为 \。例如,path.join('/', '') 将在 Windows 上 return \。尽管节点 v0.12 将能够以跨平台的方式访问特定于平台的路径方法(例如,您可以访问 Windows 上的 *nix 路径函数)。