2015-11-04 84 views
0

我想让这个脚本创建一个目录,然后在其中写入东西。简单的XML转储&东西。节点FS ENOENT错误

我无法得到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'); 
} 

. . . 
+0

似乎像Windows无法识别“./folder”,尽量先用全路径 – Gepser

+1

尝试'var logsDir = __dirname +'/ logs /';'您可能正在从'logs'不存在的目录调用脚本。 – usandfriends

+0

其实@usandfriends的评论比我好,所以你应该试试他说的。 – Gepser

回答

0
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); 
      } 
     } 
}); 
+0

你应该使用var fs = require('fs'); – Athul

0
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 '); 
}); 
+0

这两个答案都可以使用 – Athul