node.js - Why I am I unable to instantiate eventEmitter obj using the code below
问题描述
I have an error instantiating eventEmitter object with the below syntax:
const events=new require('events').EventEmmiter();// throws error
But the next method works:
const events=require('events');
const myEvent=new events.EventEmmiter();// no error
I expect that an object is created but I am facing the below error
TypeError: (intermediate value).EventEmmiter is not a function
What's going on, and how do I fix it?
解决方案
new
与成员 access 具有相同的优先级.
,并且从左到右进行评估,因此:
const events = new require('events').EventEmitter(); // throws error
就好像
const events = (new require('events')).EventEmitter(); // throws error
类似地,您可以对 DOMParser 进行实例化并立即调用实例的方法 (parseFromString),而无需任何分组括号:
const doc = new DOMParser().parseFromString('<div>foo<div>', 'text/html');
// equivalent to
//const doc = (new DOMParser()).parseFromString('<div>foo<div>', 'text/html');
这是错误的,因为您想require
作为普通函数调用,而不是使用new
- 您想new
使用EventEmitter
调用。
require
您可以通过在to中加上括号来修复它EventEmitter
,以便您可以EventEmitter
使用以下命令调用构造函数new
:
const events = new (require('events').EventEmitter)();
(确保拼写也正确)
推荐阅读
- python-3.x - 使用 pandas 数据框对 for 循环进行矢量化
- r - 带有 stat_summary 的 ggplot 表示以天为单位的平均时间
- python - 如何在while循环上更新配置文件并同时从不同的脚本中获取值?
- php - 为什么 PHP 会将一些浮点数解析为奇怪的日期?
- css - 如何将 wordpress 后端编辑器主题变成主题?
- r - 用 For-Loop 计算平均每日收益
- ios - `dropSessionDidUpdate` 中的 UICollectionViewDropDelegate 错误的目标索引路径
- android - Google Translate API 在调试模式下工作,但在 Signed Released APK 上崩溃
- c++ - 如何为嵌套指针结构动态分配内存?
- javascript - 如何将输入限制为仅数字 0-9?