javascript - 通过导入使用解构和重命名

标签 javascript ecmascript-6

我目前正在为 Slack 构建一个机器人使用 node-slack-sdk .在他们的示例中,他们得到以下行:

var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
CLIENT_EVENTS然后使用如下:
rtm.on(CLIENT_EVENTS.RTM.AUTHENTICATED, function handleRTMAuthenticated() {
  console.log('RTM client authenticated!');
});

我已更改 require为了使用解构直接得到CLIENT_EVENTS.RTM我重命名的对象 RTM_CLIENT_EVENTS .
const {
  CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS },
} = require('@slack/client');

现在,我想更改 requireimport :
import {
  CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS },
}  from '@slack/client';

但我收到以下错误:

ES2015 named imports do not destructure. Use another statement for destructuring after the import



知道为什么他们不解构吗?

最佳答案

importstrict syntax仅模仿浅层解构语法,但应该进行静态分析。 export 也是如此,它模仿对象字面量语法。

正如错误所暗示的那样,正确的方法是

import { CLIENT_EVENTS }  from '@slack/client';

const { RTM: RTM_CLIENT_EVENTS } = CLIENT_EVENTS;

关于javascript - 通过导入使用解构和重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45080149/

相关文章:

javascript - SyntaxHighlighter 和 jQuery 的 IE 错误 - "Unable to get value of the property ' slice' : object is null or undefined"

javascript - 嵌套的 json 需要借助 Angular 以树结构格式动态显示

javascript - ES6 : destructuring an object with symbols as keys

javascript - JavaScript 中是否有一种方法可以在相对较快的时间内获取大量 BigInt 类型的表示?

ecmascript-6 - 如何仅针对 ForOfStatement 关闭 ESLint 的无限制语法规则?

javascript - push()中插入子节点数组的问题

javascript - 双击jquery中的功能以选择选项元素

javascript - Codeigniter 和 AJAX - 关闭编辑模式时重置/清除模式表单

javascript - 如何在加载页面时同步网站内容

javascript - 首次登录时需要提醒