“require”与“import”es6的运作方式有何不同?

时间:2016-04-05 08:23:12

标签: javascript phantomjs ecmascript-6 require immutable.js

我遇到了一个我无法解释的行为。 取决于使用importrequire,此测试成功(import)或失败(require)。

如果失败,我有以下错误:

  

PhantomJS 2.1.1(Windows 7 0.0.0)不变性数字是不可变的FAILED undefined不是构造函数(评估'expect((0,_immutable.List)([1]))。toEqualImmutable((0,_immutable) .LIST)([1]))')

以下是代码:

import { Map, List } from 'immutable';
const expect = require("expect");
// import expectImmutable from "expect-immutable";
const expectImmutable = require("expect-immutable");

expect.extend(expectImmutable);

describe("immutability", () => {
    describe("a number", () => {
        function increment(currentState) {
            return currentState + 1;
        }
        it("is immutable", () => {
            expect(List([1])).toEqualImmutable(List([1]));
            expect(Map({ a: 1 })).toEqualImmutable(Map({ a: 1 }));
            let state = 42;
            let nextState = increment(state);

            expect(List([nextState])).toEqualImmutable(List([43]));
            expect(List([state])).toEqualImmutable(List([42]));
        });
    });
});

有没有人对幕后发生的事情有解释?

1 个答案:

答案 0 :(得分:1)

感谢@zerkms和@maioman,您的建议确实有所帮助。 你是对的@maioman,这是由于库使用的导出语法。

es6:

export default foo;

要求:

module.exports = foo;

因此,当需要es6编写导出时,我们应该处理默认关键字。

require("foo").default;