Windows文件系统中的nodejs路径错误4058 ENOENT

vee*_*er7 5 javascript windows filesystems file node.js

我正在使用带有 Nodejs 的文件系统windows写入进程日志。我有以下代码

var fs = require('fs');
var config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
var statusLogStream = fs.createWriteStream("../logs/load stat"+(new Date())+".log");
Run Code Online (Sandbox Code Playgroud)

结果出现错误

    { [Error: ENOENT: no such file or directory, open 'C:\proc\logs\load stat Mon Apr 18 2016 19:09:32 GMT+0530 (India Standard Time).log']
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'C:\\proc\\logs\\load stat Mon Apr 18 2016 19:09:32 GMT+0530 (India Standard Time).log' }
events.js:141
      throw er; // Unhandled 'error' event
  ^
Run Code Online (Sandbox Code Playgroud)

我尝试手动打开该文件夹,C:\\proc\\logs但它不起作用,C:/proc/logs当我用正斜杠替换双反斜杠时,我可以从资源管理器手动打开该文件夹。

如何让它发挥作用

为什么它采用的是double backward slash而不是forward slash

IMP:上面的代码在linux ubuntu服务器中工作得很好,但在windows

Fra*_*sco 6

问题不在于斜杠,而在于如何将日期转换为字符串。

我打赌这会起作用:

var statusLogStream = fs.createWriteStream("../logs/load stat.log");
Run Code Online (Sandbox Code Playgroud)

更新 Windows 抱怨日期字符串表示形式中的两个冒号 ( Mon Apr 18 2016 19**:**09**:**32 GMT+0530 (India Standard Time))

这可能是一个不错的选择:

var myDate = new Date().toJSON().replace(new RegExp(':', 'g'),'.');
// myDate is now "2016-04-18T15.19.21.174Z"
var statusLogStream = fs.createWriteStream("../logs/load stat"+(myDate)+".log");
Run Code Online (Sandbox Code Playgroud)