【问题标题】:Node FS ENOENT error节点 FS ENOENT 错误
【发布时间】:2018-03-27 16:53:19
【问题描述】:

我试图让这个脚本创建一个目录,然后在里面写东西。简单的 XML 转储和东西。

我无法让 FS 工作。 isDirectory、createDirectory、readFile、writeFile。我在另一篇 SO 帖子中的阅读表明对 fs.stat() 进行了很多更改。

我已经设置了文件夹的权限,所以它应该没有任何权限问题(Windows)。

我检查以前的文件并创建新文件或打开它们的第一步:

. . .

var logsDir = './logs/';
var logAccess = logsDir + 'stuff.log';

try {   // The code says its an ENOENT
    console.log(fs.statSync(logsDir))

    if (!fs.statSync(logsDir).isDirectory()) {
        fs.mkdirSync(logsDir);
    }
} catch (e) {
    console.error('Error   ' + e.code);
}

try {   // Another ENOENT
    if (!fs.statSync(logAccess).isFile()) {
        fs.writeFileSync(logAccess, 'die', 'utf8');
    }
    //data = fs.readFileSync(logAccess, 'utf8');
} catch (e) {
    console.error('Error   errors are dumb');
}

. . .

【问题讨论】:

  • Windows 似乎无法识别“./folder”,请先尝试使用完整路径
  • 试试var logsDir = __dirname + '/logs/'; 您可能从不存在logs 的目录调用脚本。
  • 其实@usandfriends的评论比我的好,所以,你应该试试他说的。
  • 我都去尝试了。两者都不起作用
  • logs 是否普遍存在(在您调用脚本的目录和脚本实际所在的目录中)?

标签: node.js fs


【解决方案1】:
fs.stat(logsDir, function(err,stat){
    try{
    if(err)
    {
        var e = err.code;
        throw e;
    }
        }
        catch(e)
        {
          if(e == 'ENOENT')
            {
             fs.mkdir(logsDir);   
            }
        else
            {
        console.log('Some other error   ' + err.code);
            }  
        }
});

fs.stat(logAccess, function(err,stat){
    try{
    if(err)
    {
        var e = err.code;
        throw e;
    }
        }
        catch(e)
        {
          if(e == 'ENOENT')
            {
             fs.writeFileSync(logAccess, 'die', 'utf8');   
            }
        else
            {
        console.log('Some other error   ' + err.code);
            }  
        }
});

【讨论】:

  • 你应该使用 var fs = require('fs');
【解决方案2】:
var fs = require('fs');
var express = require("express");
var app = express();
var logsDir = './logs/';
var logAccess = logsDir + 'stuff.log';

 function directoryExits(logsDir){
 try {   
 return fs.statSync(logsDir).isDirectory();   
 } catch (err) {
 return false;
 }
}

  function fileExits(logAccess){
  try {   
   return fs.statSync(logAccess).isFile();     
   } catch (err) {
    return false;
   }
 }

var statsDir = directoryExits(logsDir);
var statsFile = fileExits(logAccess);
  if(!statsDir)
  {
  fs.mkdirSync(logsDir);   
  console.log("Directory Created")
  }
  else
  console.log('Directory already exists'); 
    if(!statsFile)
    {
    fs.writeFileSync(logAccess, 'die', 'utf8');
    }
    else
    console.log('File already exists');


app.listen(4000, function(){
console.log('Server running '); 
});

【讨论】:

  • 两个答案都可以使用
猜你喜欢
  • 1970-01-01
  • 2014-12-18
  • 2012-02-21
  • 2018-10-31
  • 2013-09-21
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
相关资源
最近更新 更多