Javascript Node.js addEventListener和其他不带浏览器的事件

Javascript Node.js addEventListener和其他不带浏览器的事件,javascript,node.js,events,Javascript,Node.js,Events,任务是在Node.js上运行此脚本,而不使用浏览器。问题是代码只在浏览器的上下文中工作,并且只在这种形式下工作 var d1 = {}; function test(data){ console.log(data); d1 = data; } addEventListener("test", test, false); var cv = document.createEvent("CustomEvent"); (function init(e) { e.initCu

任务是在Node.js上运行此脚本,而不使用浏览器。问题是代码只在浏览器的上下文中工作,并且只在这种形式下工作

var d1 = {};

function test(data){
    console.log(data);
    d1 = data;
}
addEventListener("test", test, false);

var cv = document.createEvent("CustomEvent");

(function init(e) {
    e.initCustomEvent("test", false, false, ["test1","test2", {test: 'test3'}]);
    dispatchEvent(e)
}(cv));

console.log(d1);
如果更改init的函数(删除括号(…),则代码将无法正常工作

function init(e) {
    e.initCustomEvent("test", false, false, ["test1","test2", {test: 'test3'}]);
    dispatchEvent(e)
}(cv);

在网上,我发现。错误代码不会随它一起给出,但其工作原理与不带括号的代码版本相同。这个解决方案有什么问题?所有代码都已启动

因为NodeJ没有DOM,也没有
文档
对象,所以需要以不同的方式创建自定义事件。检查节点文档以了解这一点

//获取events模块的EventEmitter类的引用
var事件=要求(“事件”);
//使用上述引用创建EventEmitter类的对象
var em=new events.EventEmitter();
//订阅FirstEvent
em.on(“测试”,功能(数据){
console.log('第一个订户:'+数据);
});
//引发第一事件
em.emit('test','这是我的第一个Node.js事件发射器示例')