Windows下Node.js中的非规范化路径分隔符
Posted
技术标签:
【中文标题】Windows下Node.js中的非规范化路径分隔符【英文标题】:Denormalizing path separator in Node.js under Windows 【发布时间】:2014-08-27 10:01:45 【问题描述】:在 Windows 中,Node.js 的 path
模块生成所有带有反斜杠的路径。当调用其他函数(如resolve()
)时,它似乎调用了自己的normalize()
函数。
有没有办法去规范化路径(使用正斜杠),而无需在整个地方显式替换?
我尝试设置path.sep = '/'
,但resolve()
仍然会生成带有\\
的路径。
【问题讨论】:
看起来这不可能。你的用例是什么?考虑到大局,我们或许能够提出更好的解决方案。 用例是获取资产的路径,相对于另一个路径(页面)。所以出现在<a href=
中的结果路径就是这个相对路径。此外,任何网络可访问路径都使用正斜杠,因此它必须是Windows用户的普遍要求。
啊,您正在寻找构建 URL 而不是本机文件路径。 url
模块是否符合您的要求?见url.resolve。你还需要path
的其他功能吗?
【参考方案1】:
你可以path.sep
或path.parse
来反汇编路径,然后加入。
【讨论】:
(path.delimiter 用于分隔路径(/usr/bin:/bin
中的冒号)。您的意思是 sep。)【参考方案2】:
我在使用 Windows 10 时遇到了这个问题。我用这个脚本解决了这个问题:
var path = require('path');
path.join2 = path.join;
path.sep = '/';
path.join = function()
var res = path.join2.apply(, arguments);
res = res.replace(/\\/g, path.sep);
return res;
//rest of your code
【讨论】:
请不要建议人们对标准库进行猴子补丁。以上是关于Windows下Node.js中的非规范化路径分隔符的主要内容,如果未能解决你的问题,请参考以下文章
Node.js 的 commonJS 规范 ES6 导入 js 文件