节点 JS 取消处理程序错误事件

Node JS Unhandler Error Event

本文关键字:错误 事件 程序 处理 JS 取消 节点      更新时间:2023-09-26

我是这里的新手,我正在尝试编写一个代码,其中使用了节点的事件发射器,请参阅下面的代码,

var EventEmitter = require('events').EventEmitter;
var errors = require('./errors');
var defaults ={
    default_api_endpoint_v0 : "someapi",
    oauth_c_key: "oauth_consumer_key",
    options_check: ['oauth_consumer_key']
};
var someapi = function(options){
    this.options = options;
    EventEmitter.call(this);
    if(!this.options)
        this.emit('error',errors.options_not_passed);
        return;
        //return errors.options_not_passed
    if(!this.checkOptions()){
        return errors.options_passed_not_satisfied
    }
};
someapi.prototype = Object.create(EventEmitter.prototype);
someapi.prototype.checkOptions = function(){
    var thatOptions = this.options;
    var bool = false;
    if(typeof thatOptions !== 'object')
      return errors.options_passed_not_satisfied;
    Object.keys(thatOptions).forEach(function(key){
        Object.keys(defaults.options_check).forEach(function(Key){
            if(key === defaults.options_check[Key]){
                bool = true;
            }
        })
    });
    return bool;
};
module.exports = someapi

我在下面这样调用它,

var op = new someapi();
op.on('error',function(err){
    console.log("Emitted" + err);
})

但它抛出了这个错误,我不知道我做错了什么,

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Please pass the options                                      
    at Object.<anonymous> (d:'gitHub'someapi'lib'errors.js:2:26)
    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 Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (d:'gitHub'someapi'lib'api.js:2:14)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)

在上面的错误中,请传递我返回的选项,它位于错误文件中,见下文,

module.exports = {
    options_not_passed : new Error("Please pass the options"),
    options_passed_not_satisfied : "Please check are you sending all the options_params"
};

有人可以给我一些我在这里做错的事情吗???

对于上述内容,我知道我在创建对象时没有传递选项对象到 someapi 类。 我想知道为什么我的错误没有在"on"事件中得到处理。

附言提前感谢。

原因是因为您从构造函数发出错误。在创建实例,无法附加侦听器(或对对象执行任何其他操作)(因为您还没有对从new someapi()返回的新对象的引用)。