Javascript 预期未定义为节点模块的对象

Javascript 预期未定义为节点模块的对象,javascript,node.js,ecmascript-6,mocha.js,Javascript,Node.js,Ecmascript 6,Mocha.js,我到底做错了什么。函数不是JS中的对象吗 car.js 'use strict'; var Car = function(){ }; export default Car; import {expect} from 'chai'; import {Car} from '../../src/car'; describe('car', () => { it('should have a car to work with', () => { expec

我到底做错了什么。函数不是JS中的对象吗

car.js

'use strict';


var Car = function(){

};

export default Car;
import {expect} from 'chai';
import {Car} from '../../src/car';

describe('car', () => {

    it('should have a car to work with', () => {
        expect(Car).to.be.an('object');
    });

});
汽车测试.js

'use strict';


var Car = function(){

};

export default Car;
import {expect} from 'chai';
import {Car} from '../../src/car';

describe('car', () => {

    it('should have a car to work with', () => {
        expect(Car).to.be.an('object');
    });

});
更新

我甚至可以忽略var,不确定这是否会产生影响,var仍然指向相同的东西,但我也可以这样做:

function Car(){

};

export default Car;

a/an
测试项目的
typeof
值。是的,函数是对象,但它们的
类型是
“函数”


这几乎是唯一一个地方,
typeof
为我们提供了比对象的
“object”
更详细的信息(事实上,我想不出另一个;
typeof new Date
“object”
typeof
regexp对象是
“object”
,等等)
typeof
相当模糊,但在这种情况下是特定的。:-)FWIW,我在我的贫血小博客上写了一点类型检查:

所以这就是我缺少基本知识的地方。函数不是JS中的对象吗?好的,很酷。因此,我想确定我可以使用它……那么我应该使用new关键字来通过此测试吗?@WTF:仅当您想A)实例化
汽车
,B)如果
汽车
不是函数,则抛出错误(而不是测试失败)。为什么不
expect(car.to.be.a('function')?因为我测试的是对象而不是函数…这是一个节点模块我将其用作对象。您的导入错误,这就是为什么
Car
未定义的原因。它应该是从“../../src/Car”导入的
Car