Javascript 使用新的实验节点';带有ES6模块的Events目标类

Javascript 使用新的实验节点';带有ES6模块的Events目标类,javascript,node.js,Javascript,Node.js,我想尝试新的DOM兼容类,它是 我只能在CommonJS模块中使用它,而不能在ES6模块中使用它。例如: 运行节点——公开内部测试.js工作,其中test.js是: const { Event, EventTarget } = require('internal/event_target'); const et = new EventTarget(); 如果我从ES6模块使用它,我会得到一个错误: test.mjs: import { Event, EventTarget } from 'i

我想尝试新的DOM兼容类,它是

我只能在
CommonJS
模块中使用它,而不能在ES6模块中使用它。例如:

运行
节点——公开内部测试.js
工作,其中
test.js
是:

const { Event, EventTarget } = require('internal/event_target');

const et = new EventTarget();
如果我从ES6模块使用它,我会得到一个错误:

test.mjs

import { Event, EventTarget } from 'internal/event_target';

const et = new EventTarget();
运行
节点--暴露内部测试。mjs
失败,原因是:

语法错误:请求的模块'internal/event\u target'未提供名为'event'的导出。


有没有办法让它与ES6一起工作?

它看起来只公开一个默认的导出,它是一个对象,而不是命名的导出。因此,您必须导入默认值,然后使用分解:

import event_target from 'internal/event_target';
const { Event, EventTarget } = event_target;

const et = new EventTarget();

那很有效,非常感谢!顺便问一下,是否有任何命令行选项或环境变量使其在默认情况下工作,而不必导入
内部/event_target
?@noserratio-您的意思是,这样您就可以执行
const{event,EventTarget}=event_target?或者只使用
Event
EventTarget
而不必做任何事情?我不知道环境变量或
package.json
设置(但我不是Node.js专家),但您的输入模块总是可以使它们成为全局变量:
import event\u target from“internal/event\u target”;({Event:globalThis.Event,EventTarget:globalThis.EventTarget}=Event_target)
那么应用程序中的所有其他模块都可以作为全局模块访问它们。我想,也许有一种方法可以使
EventTarget
在全局名称空间中可用,而无需
import
,就像在浏览器中一样。但也许那是不可能的。谢谢你的帮助@noseratio-可能有一种我不知道的更好的方法,但是如果它在入口点模块中,上面注释中的代码会这样做。我最终使用它只是为了测试,它是一个可以在节点(我仍然使用EventEmitter)和浏览器(我使用EventTarget)中使用的模块。你的答案在这方面很有用。