node.js filesystem mangles Cygwin驱动器名称

时间:2016-06-03 22:06:00

标签: node.js cygwin

我最近在使用Cygwin32很长一段时间后安装了Cygwin64,现在我的一个生产脚本出现了问题。 Node.js' readFileSync'似乎是将Windows驱动器号放在路径上然后无法解决 - 例如/ cygdrive / c / foo变为c:/ cygdrive / c / foo。

我在网上发现了各种类似问题,但到目前为止我还是无法解决这个问题。我的同事看似相同,但没有遇到问题。

简而言之 -

$ cat filetest.js
var fs = require('fs');
function main(argv) {
    console.log("fileName => ", argv[2]);
    var data = fs.readFileSync(argv[2], 'utf8');
    console.log("success");
}
main(process.argv);

$ s/node filetest.js filetest.js
fileName =>  filetest.js
success

$ ls -l /cygdrive/c/temp/Test.txt
----rwx---+ 1 bdodd Domain Users 14 Jun  3 14:12 /cygdrive/c/temp/Test.txt

$ s/node filetest.js /cygdrive/c/temp/Test.txt
fileName =>  /cygdrive/c/temp/Test.txt

  fs.js:338
    return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                   ^
  Error: ENOENT, no such file or directory 'C:\cygdrive\c\temp\Test.txt'

只是为了完整......

$ cat /etc/fstab
# /etc/fstab
#
#    This file is read once by the first process in a Cygwin process tree.
#    To pick up changes, restart all Cygwin processes.  For a description
#    see https://cygwin.com/cygwin-ug-net/using.html#mount-table

# This is default anyway:
none /cygdrive cygdrive binary,posix=0,user 0 0

$ cd /cygdrive/
$ ls -l
total 40
d---rwx---+ 1 NT SERVICE+TrustedInstaller NT SERVICE+TrustedInstaller 0 Jun  3 14:09 c
dr-xrwxr-x  1 Unknown+User                Unix_Group+33               0 Apr 29  2014 u

洞察力将不胜感激。谢谢!

0 个答案:

没有答案