2016-04-23 103 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不是function,因爲它收到的值是myModule,也不是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

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(()=> {});'in'impl.js'將啓動你朝向你的目標。 –

+0

@WTF:正如Jonathon所說,你沒有向回調傳遞任何東西('return callback();'),所以錯誤是正確的。 –