2013-09-29 2 views
0

Почему этот код не работает? Если я прокомментирую fs.readFileSync ('file.html'); код работает, и это создает файл «file.html» Но если я раскоментировать fs.writeFileSync не работает, и программа вылетает с ошибкой:Почему мой fs.readFileSync не работает

fs.js:427 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: ENOENT, no such file or directory 'file.html' at Object.fs.openSync (fs.js:427:18) at Object.fs.readFileSync (fs.js:284:15) at Object. (/home/pedro/startupEngineering/hw3/Bitstarter/testrestler.js:15:6) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:901:3

#!/usr/bin/env node 


var fs = require('fs'); 
var rest = require('restler'); 

var restlerHtmlFile = function(Url) { 
    rest.get(Url).on('complete', function(result) { 
    fs.writeFileSync('file.html',result); 
    }); 
}; 

if(require.main == module) { 
    restlerHtmlFile('http://obscure-refuge-7370.herokuapp.com/'); 
    fs.readFileSync('file.html'); 
} 

else { 
exports.checkHtmlFile = checkHtmlFile; 
} 
+1

'нет такого файла или каталога 'file.html'' – SLaks

ответ

1

Изменить

var restlerHtmlFile = function(Url) { 
    rest.get(Url).on('complete', function(result) { 
    fs.writeFileSync('file.html',result); 
    }); 
}; 

if(require.main == module) { 
    restlerHtmlFile('http://obscure-refuge-7370.herokuapp.com/'); 
    fs.readFileSync('file.html'); 
} 

в

var restlerHtmlFile = function(Url) { 
    rest.get(Url).on('complete', function(result) { 
    fs.writeFileSync('file.html',result); 
    fs.readFileSync('file.html'); 
    }); 
}; 

if(require.main == module) { 
    restlerHtmlFile('http://obscure-refuge-7370.herokuapp.com/'); 
} 

Второй параметр rest.get(Url).on асинхронный обратный вызов функции, которая будет вызываться, когда complete происходит и только тогда файл будет создан. Но вы читаете файл, даже до появления complete. Вот почему вы получаете эту ошибку.

0

Вы не напишите файл до тех пор, пока не произойдет событие complete, но вы попытаетесь прочитать его немедленно.

Поскольку он еще не существует, вы получаете исключение, которое вы не поймаете, поэтому программа выходит до того, как произойдет событие события complete, и файл написан.

Вам необходимо перенести код, который пытается прочитать из файла внутри обработчика событий, который записывает файл.

Смежные вопросы