导出的函数不是函数?

时间:2016-04-23 23:27:02

标签: javascript node.js ecmascript-6

不确定为什么它不将此视为功能:

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

2 个答案:

答案 0 :(得分:2)

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

使用命名导出

export function myModule() { ... }

或正确导入模块

import myModule from '...';

请参阅export documentation on MDN for more info

答案 1 :(得分:2)

module不是function,因为它收到的值myModule,也不是function

而且,这是因为您没有使用import export default myModule的正确语法。为此,您需要删除import myModule from '../../src/impl.js' 周围的大括号:

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

From MDN

  

语法

     

import

使用大括号,export将按名称匹配特定的import { myModule } from '...';

export let myModule = ...;
     

对应于:

export function myModule() { ... };
     
impl.js

并且,myModule不会导出任何实际命名为/([a-zA-Z]+\s?\b){2,}/g的内容。