nodeJS:fs.write回调和fs.writeFile不起作用

时间:2016-04-28 13:27:22

标签: node.js casperjs fs

在我学习使用casperjs从网站上抓取一些内容并将其保存到文件之前,我对fs一无所知。在网络上的一些例子之后,我写了这个文件scrape.js(json数据已经过测试,所以它与问题无关):

var fs = require('fs');
var url =  "http://w.nycweb.io/index.php?option=com_k2&view=itemlist&id=4&Itemid=209&format=json";
var casper = require('casper').create();

casper.start(url,function(){
  var json = JSON.parse(this.fetchText('pre'));
  var jsonOfItems={},items = json.items;
  items.forEach(function(item){
    jsonOfItems[item.id] = item.introtext.split('\n');
  })
  fs.write('videoLinks.json',JSON.stringify(jsonOfItems),function(err){
    if (err) console.log(err);
    console.log('videoLinks.json saved');
  })
});
casper.run();

当我在我的Ubuntu 14.04服务器的命令行中casperjs scrape.js时,虽然文件已正确保存,但我没有按预期看到文件保存的消息。所以这是第一个问题:为什么回调根本不运行?

其次,我也尝试了fs.writeFile,但是当我用它替换fs.write时,文件根本没有保存,也没有任何错误信息。

我注意到在casper文档中它说casper不是node.js模块而且node.js的某些模块不可用,但是我怀疑它与我有什么关系的问题。我认为值得一提的是,之前当我运行此脚本时,我只得到像

这样的响应
  

我' fs'模块。

我必须按照此question全局重新安装fs模块才能使其正常运行。

1 个答案:

答案 0 :(得分:1)

fs.write需要一个文件描述符,你试图给它一个文件名。试试fs.writeFile。 https://nodejs.org/dist/latest-v4.x/docs/api/fs.html#fs_fs_writefile_file_data_options_callback

编辑:哦,你试过了。你确定它没有像根目录那样写吗?在那里试过一条完整的道路?

你在运行什么版本的节点?