在express中,在定义索引路由时,我使用“/”(有效),但是,我试图使根可配置,所以我尝试了以下操作:
var root = ""; // can be whatever, but is sometimes empty
app.get(path.join(root, ""), ...);
当我启动服务器(并导航到“索引”)时,出现错误; “Cannot GET/
”,但这不就是“/”吗?它们有何不同?
为什么 "/"
有效,而 path.join("", "")
不起作用?
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 路径函数)。
我是一名优秀的程序员,十分优秀!