在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环境中运行。
由于
答案 0 :(得分:0)
关于为什么它将正斜杠转换为反斜杠的问题,来自the Node.js Path module documentation
path.join()方法使用。将所有给定的路径段连接在一起 平台特定分隔符作为分隔符,然后规范化 结果路径。
因此,当您在Windows上运行时,当您使用Path模块加入时,它将始终使用反斜杠(并且似乎将任何其他类型的分隔符转换为它们)。
您可以通过以下方式修复此问题:不使用path.join并自行构建路径,如果您真的希望能够使用您在多个平台上编写的实用程序,则建议不要这样做。
关于你的第二个补充,另一个引用:
EISDIR表示操作的目标是一个目录 现实,但目标的预期文件类型是什么 除了目录。