简体   繁体   English

在 ES6 模块中使用新的实验性 Node 的 EventTarget 类

[英]Using new experimental Node's EventTarget class with ES6 modules

I'd like to try the new DOM-compatible EventTarget class which is available as of Node.js 14.7.0 .我想尝试新的与 DOM 兼容的EventTarget类,它从 Node.js 14.7.0 开始可用

I'm only able to do so if I use it from a CommonJS module, but not from an ES6 module.如果我从CommonJS模块中使用它,我只能这样做,而不能从 ES6 模块中使用它。 For example:例如:

Running node --expose-internals test.js works, where test.js is:运行node --expose-internals test.js有效,其中test.js是:

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

const et = new EventTarget();

If I use it from an ES6 module, I'm getting an error:如果我从 ES6 模块使用它,则会收到错误消息:

test.mjs : test.mjs

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

const et = new EventTarget();

Running node --expose-internals test.mjs fails with:运行node --expose-internals test.mjs失败:

SyntaxError: The requested module 'internal/event_target' does not provide an export named 'Event'

Is there a way to make it work with ES6?有没有办法让它与 ES6 一起工作?

It looks like it only exposes a default export which is an object, not named exports.看起来它只公开一个默认导出,它是一个对象,而不是命名导出。 So you have to import the default and then use destructuring:所以你必须导入默认值,然后使用解构:

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

const et = new EventTarget();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM