2017-07-13 10 views
2

私は現在node-slack-sdkを使用してSlackのボットを構築しています。その後、次のように使用されているインポートでの破棄の使用

var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS; 

CLIENT_EVENTS:彼らの例では、彼らは次の行を持って、私は直接CLIENT_EVENTS.RTMオブジェクトを取得するための非構造を使用するためにrequireを変更した

rtm.on(CLIENT_EVENTS.RTM.AUTHENTICATED, function handleRTMAuthenticated() { 
    console.log('RTM client authenticated!'); 
}); 

そのI名前がRTM_CLIENT_EVENTSに変更されました。

import { 
    CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS }, 
} from '@slack/client'; 

しかし、私は次のエラーました:

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

任意のアイデアをなぜ彼らはdestructureません

const { 
    CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS }, 
} = require('@slack/client'); 

今、私はrequireimportに変更したいですか?

答えて

4

importstrict syntaxですが、これは浅い構造化構文を模倣するだけですが、静的に解析されるはずです。 exportも同様に、オブジェクトのリテラル構文を模倣します。

エラーが示すように、これを行うための適切な方法は、私はそれについて知らなかった

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

const { RTM: RTM_CLIENT_EVENTS } = CLIENT_EVENTS; 
+0

です!ありがとう:) – Erazihel

+1

ようこそ。厳密な構文では、IDEとリンターはモジュールのインポートとエクスポートを正確に把握することができます。これは、緩やかなCommonJSモジュールでは不可能でした。 – estus

関連する問題