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.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

【讨论】:

请不要建议人们对标准库进行猴子补丁。

以上是关于Windows下Node.js中的非规范化路径分隔符的主要内容,如果未能解决你的问题,请参考以下文章

Windows 环境下安装与配置 Node.js

Node.js 的 commonJS 规范 ES6 导入 js 文件

Node.js 的 commonJS 规范 ES6 导入 js 文件

Windows 下安装 Node.js

node.js

Windows10安装node.js