在express中,在定义我的索引路由时,我使用“/”(有效),但是,我正在尝试使根可配置,所以我尝试了以下内容:
var root = ""; // can be whatever, but is sometimes empty
app.get(path.join(root, ""), ...);
当我启动服务器(并导航到'index')时,出现错误; “Cannot GET /
”,但不是“/”是什么?他们有什么不同?
为什么"/"
在path.join("", "")
不起作用时有效?
答案 0 :(得分:0)
path.join("", "")
返回.
。所以它等同于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上返回\
。虽然node v0.12可以跨平台方式访问特定于平台的路径方法(例如,您可以在Windows上访问* nix路径函数)。