也许我很难(我应该只寻找./
and的前缀../
)但我不想重新发明轮子并编写一个函数来正确检测相对路径(对于所有平台等)
现有图书馆?
有没有npm
这样做的包?果然这个问题已经解决了……
方法?
除了现有的库之外,我的预期方法是使用path
模块函数到join
已知前缀的可能相对路径,然后看看结果是什么,假设path.join('some_base', possiblyRelative)
允许以平台安全的方式实现某种区分特征。
还有其他建议吗?方法?
也许我很难(我应该只寻找./
and的前缀../
)但我不想重新发明轮子并编写一个函数来正确检测相对路径(对于所有平台等)
有没有npm
这样做的包?果然这个问题已经解决了……
除了现有的库之外,我的预期方法是使用path
模块函数到join
已知前缀的可能相对路径,然后看看结果是什么,假设path.join('some_base', possiblyRelative)
允许以平台安全的方式实现某种区分特征。
还有其他建议吗?方法?
UPDATE2:TomDotTom 在这里找到了更可靠的答案:How to check if a path is absolute or relative
在这里转载(但反过来):
var path = require('path');
function isRelative(p) {
return path.normalize(p + '/') !== path.normalize(path.resolve(p) + '/');
}
对于节点 v0.12 及更高版本,我建议path.isAbsolute
改为。
这有点晚了,但对于其他搜索同一问题的人来说:
从节点版本 0.12.0 开始,您就拥有了模块中的path.isAbsolute(path)
功能。path
要检测您的路径是否是相对的,请使用它的否定:
IE:
var path = require('path');
if( ! path.isAbsolute(myPath)) {
//...
}
function isRelative(str)
{
//Remove quotes as it can potentially mess up the string
str=str.replace("\'\"",'');
return str.substring(0,2)=="./"||str.substring(0,3)=="../";
}
在这个例子中,我们只允许相对字符串作为字符串路径的开头