导出函数不是函数?

不知道为什么不把它看作一个函数:

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

module不是一个function因为它接收到它的值myModule也不是一个function

而且,这是因为您没有使用非常正确的语法来import export default 。 为此,您需要删除myModule的大括号:

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

来自MDN :

句法

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


使用大括号, import将通过名称匹配特定的export

 import { myModule } from '...'; 

对应于:

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

而且, impl.js不会导出任何真正名为myModule东西。

您没有名为myModule的导出。 您只有一个默认导出。

要么使用命名的导出

 export function myModule() { ... } 

或正确导入模块

 import myModule from '...'; 

有关更多信息,请参阅MDN上的export文档 。