快速路由“/”
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 路径函数)。
在 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 路径函数)。