node.js中的路径模块由于某种原因反转斜杠

时间:2016-09-27 19:48:37

标签: node.js path

在node.js路径模块中,我有这个

var path = require('path');
var filepath = path.join("C:/hello", "/foo/bar");
console.log(filepath);

但打印出来

C:\hello\foo\bar

我希望它使用第一个参数的斜杠方向,即/,但它使用了\。有谁能解决这个问题?

如果我使用带有\斜杠的那个,然后使用fs模块从文件中读取,我得到

{ Error: EISDIR: illegal operation on a directory, open 'C:\main\temp\config
1\folder\plugin\jquery-3.1.1.min.js'
    at Error (native)
  errno: -4068,
  code: 'EISDIR',
  syscall: 'open',
  path: 'C:\\main\\temp\\config1\\folder\\plugin\\jquery-3.1.1.min.js' }

我正在Windows环境中运行。

由于

1 个答案:

答案 0 :(得分:0)

关于为什么它将正斜杠转换为反斜杠的问题,来自the Node.js Path module documentation

  

path.join()方法使用。将所有给定的路径段连接在一起   平台特定分隔符作为分隔符,然后规范化   结果路径。

因此,当您在Windows上运行时,当您使用Path模块加入时,它将始终使用反斜杠(并且似乎将任何其他类型的分隔符转换为它们)。

您可以通过以下方式修复此问题:不使用path.join并自行构建路径,如果您真的希望能够使用您在多个平台上编写的实用程序,则建议不要这样做。

关于你的第二个补充,另一个引用:

  

EISDIR表示操作的目标是一个目录   现实,但目标的预期文件类型是什么   除了目录。

this StackOverflow thread中找到。