Javascript 如何';要求';操作与';导入&x27;es6?

Javascript 如何';要求';操作与';导入&x27;es6?,javascript,phantomjs,ecmascript-6,require,immutable.js,Javascript,Phantomjs,Ecmascript 6,Require,Immutable.js,我遇到了一种我无法解释的行为。 根据使用import或require,此测试成功(import)或失败(require) 如果失败,我有以下错误: PhantomJS 2.1.1(Windows 7 0.0.0)不变性一个数字是不可变的失败未定义不是构造函数(计算'expect((0,_immutable.List)([1])).toEqualImmutable((0,_immutable.List)([1])) 代码如下: import { Map, List } from 'immutabl

我遇到了一种我无法解释的行为。 根据使用
import
require
,此测试成功(
import
)或失败(
require

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

PhantomJS 2.1.1(Windows 7 0.0.0)不变性一个数字是不可变的失败未定义不是构造函数(计算'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]));
        });
    });
});

有人对幕后发生的事情有什么解释吗?

谢谢@zerkms和@maioman你的建议真的很有帮助。 你是对的@maioman,这是因为库使用了导出语法

es6:

要求:

module.exports = foo;
因此,当需要es6书面导出时,我们应该处理默认关键字

require("foo").default;

只要您正在传输它-为什么不检查带有
require
的代码和传输的
import
(也将是
require
)之间的差异?您可能正在查找所需对象中的默认属性,请尝试
require(“expect”)。默认值
require(“expect immutable”)。默认值
require("foo").default;