【问题标题】:Denormalizing path separator in Node.js under WindowsWindows下Node.js中的非规范化路径分隔符
【发布时间】:2014-08-27 10:01:45
【问题描述】:

在 Windows 中,Node.js 的 path 模块生成所有带有反斜杠的路径。当调用其他函数(如resolve())时,它似乎调用了自己的normalize() 函数。

有没有办法去规范化路径(使用正斜杠),而无需在整个地方显式替换?

我尝试设置path.sep = '/',但resolve() 仍然会生成带有\\ 的路径。

【问题讨论】:

  • 看起来这不可能。你的用例是什么?考虑到大局,我们或许能够提出更好的解决方案。
  • 用例是获取资产的路径,相对于另一个路径(页面)。所以出现在<a href= 中的结果路径就是这个相对路径。此外,任何网络可访问路径都使用正斜杠,因此它必须是Windows用户的普遍要求。
  • 啊,您正在寻找构建 URL 而不是本机文件路径。 url 模块是否符合您的要求?见url.resolve。你还需要path 的其他功能吗?

标签: node.js path


【解决方案1】:

你可以path.seppath.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

【讨论】:

  • 请不要建议人们对标准库进行猴子补丁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
相关资源
最近更新 更多