2016-04-23 12 views
1

わからない:エクスポートされた関数は関数ではありませんか?それが機能としてこれを見ていない理由を

impl.js

export default function(callback){ 
    return callback(); 
}; 

test.js

import {myModule} from '../../src/impl.js' 
import {expect} from 'chai'; 

const module = myModule; 

describe('',() => { 

    it('should callback when resolve is invoked',() => { 
     module(resolve => { 
      resolve('test'); 
      }).then(value => { 
       expect(value).to.equal('test'); 
      }); 
    }); 

}); 

エラー:TypeError: module is not a function

+1

私はいいタイトルだと思っていたが、ちょうどそれを変えた、より良いことを望んだ。 – PositiveGuy

答えて

2

moduleは、値がmyModuleであるため、functionではないため、functionではありません。

importexport defaultに正しい構文を使用していないためです。そのため、あなたはmyModule周りにカッコを削除したいと思う:

import myModule from '../../src/impl.js' 

From MDN:括弧付き

Syntax

import *defaultMember* from *"module-name"*;


を、importは、その名前で特定のexportと一致します。

import { myModule } from '...'; 

Corresponds to either:

export let myModule = ...; 
export function myModule() { ... }; 

そして、impl.jsは実際にmyModuleという名前は何もエクスポートしません。

2

あなたドン名前がのエクスポートがあります。デフォルトのエクスポートのみがあります。

どちらの名前の輸出

export function myModule() { ... } 

を使用するか、適切に

import myModule from '...'; 

をモジュールをインポートするには、export documentation on MDN for more infoを参照してください。

+0

すばらしい私はそれを変更したが、今解決は私の関数の実装でimpl.jsの関数ではない。私は、impl関数を呼び出すときにresolve => {...}を送信していたので、私はimpl関数で一度呼び出せるように関数を渡しています。 – PositiveGuy

+0

@WTF 'resolve'の値はありません。 'return callback(()=> {});を' impl.js'で使用すると、あなたの目標に向かってあなたが始まります。 –

+0

@WTF:Jonathonによれば、コールバック( 'return callback();')に何も渡されていないので、エラーは正しいです。 –

関連する問題