2015-11-04 87 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