首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >windows文件系统路径错误4058 ENOENT中的nodejs

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

Stack Overflow用户
提问于 2016-04-18 14:17:50
回答 2查看 11.4K关注 0票数 3

我正在使用带有nodejs的文件系统windows中编写过程日志。我有叠码

代码语言:javascript
运行
复制
var fs = require('fs');
var config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
var statusLogStream = fs.createWriteStream("../logs/load stat"+(new Date())+".log");

结果却是个错误

代码语言:javascript
运行
复制
    { [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
  ^

我尝试这个文件夹手动打开这个文件,C:\\proc\\logs不工作,当我用正斜杠代替双反斜杠时,我可以从资源管理器手动打开这个文件夹。

如何使它发挥作用

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

linux ubuntu IMP:上面的代码在服务器上运行得非常好,但在服务器中却没有。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-18 15:00:11

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

我打赌这会成功的:

代码语言:javascript
运行
复制
var statusLogStream = fs.createWriteStream("../logs/load stat.log");

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

这可能是一个很好的选择:

代码语言:javascript
运行
复制
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");
票数 5
EN

Stack Overflow用户

发布于 2022-01-29 20:17:37

我也有过同样的问题。

在我的项目中,当我运行一个express应用程序时,我注意到当前的工作目录是该项目的根目录(当我试图读取位于脚本目录中的一个文件时)。自process.cwd() !== __dirname以来,它无法运行该文件。

您可以将其签出并在试图读取json文件的脚本中使用控制台日志process.cwd()

我只是改变了路线:

代码语言:javascript
运行
复制
const fs = require('fs');
fs.readFileSync(`${__dirname}\\FILENAME`);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36696605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档