使用解密与导入

时间:2017-07-13 12:07:25

标签: javascript ecmascript-6

我目前正在使用node-slack-sdkSlack构建机器人。在他们的例子中,他们得到以下一行:

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的{​​{1}}对象。

RTM_CLIENT_EVENTS

现在,我想将const { CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS }, } = require('@slack/client'); 更改为require

import

但是我收到了以下错误:

  

ES2015命名的进口不会破坏。导入后使用另一个语句进行解构

知道他们为什么不破坏?

1 个答案:

答案 0 :(得分:8)

import只有strict syntax只能模仿浅层解构语法,但应该进行静态分析。 export也是如此,它模仿了对象文字语法。

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

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

const { RTM: RTM_CLIENT_EVENTS } = CLIENT_EVENTS;