【问题标题】:Missing Callback Error Prevents Script from Proceeding缺少回调错误会阻止脚本继续执行
【发布时间】:2015-09-01 04:17:54
【问题描述】:

我目前正在编写一个脚本,该脚本会爬取多个站点并将结果转储到 mongodb 中。当我运行批量种子文件时(因此我不必手动运行每个爬虫和单个种子),第一个爬虫完成,但以下错误挂起,阻止了其余步骤的发生。

fs: missing callback Error: ENOENT, open '../cache/nfHitters.json'

以下是我的爬虫代码。有没有办法完全消除此错误(或者我是否缺少最佳实践来防止这种情况同时发生)?

var cheerio = require("cheerio");
var request = require("request");
var json = require("json");
var fs = require('fs');

request('website-I-Am-Crawling.com', 
    function (error, response, html) {
        if (!error && response.statusCode == 200) {
            var $ = cheerio.load(html)
            var variable = $('script')[3].children[0].data
            var data = variable.substring(variable.indexOf("= ")+2, variable.indexOf(";"))
            fs.writeFile('../cache/nfHitters.json', data, error)
    };
});

【问题讨论】:

    标签: node.js request fs cheerio


    【解决方案1】:

    error 不是函数,但您将其作为回调参数传递给fs.writeFile()。如果没有错误,error 是 null,这就是您看到该特定消息的原因。如果它是其他一些非null/undefined 值,则会引发类型错误。

    试试这个:

    fs.writeFile('../cache/nfHitters.json', data, function(err) {
      // ...
    });
    

    【讨论】:

    • 当给它一个回调参数时,服务器挂起新的回调(控制台记录'有错误'的函数)。所以我想我的问题是它默认为回调,而不是完成爬虫动作并继续下一个脚本?
    猜你喜欢
    • 2021-05-24
    • 2020-03-21
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2014-05-22
    • 2015-05-15
    • 1970-01-01
    相关资源
    最近更新 更多