Ecmascript 6 “import*作为”和“import A”这种奇怪行为的原因是什么?

Ecmascript 6 “import*作为”和“import A”这种奇怪行为的原因是什么?,ecmascript-6,commonjs,Ecmascript 6,Commonjs,如下面的代码所示,为什么从“Parent1.js”导入父项不起作用?为什么代码段2正确导入了,而代码段1没有 在我的理解中,导出应该等于module.exports,所以snippet1应该可以工作 第1段: // Parent1.js var a = exports.a = 1; //index.js import Parent from 'Parent1.js' // Not working import * as Parent from 'Parent1.js'

如下面的代码所示,为什么从“Parent1.js”导入父项不起作用?为什么代码段2正确导入了,而代码段1没有

在我的理解中,导出应该等于module.exports,所以snippet1应该可以工作

第1段:

// Parent1.js
    var a = exports.a = 1;

//index.js
    import Parent from 'Parent1.js' // Not working
    import * as Parent from 'Parent1.js' // Worked!
代码片段2:

// Parent1.js
    module.exports = {a:1}

//index.js
    import Parent from 'Parent1.js' // Worked

这里的
import
语句使用ES6语法。在
snippet1
中,对于
从“Parent1.js”导入父项
要工作,您需要使用
导出默认值a
。这将使
a
成为从
Parent1.js
导出的唯一内容。此外,无论何时在
snippet1
中调用
Parent
,都会得到
a
的结果


通过从Parent1.js执行
import*as Parent,您正在收集可能已导出到集合中的任何内容,并将其命名为
Parent
。要访问
a
,您将其称为
Parent.a
。这里的
Parent
指的是集合,而上面的
Parent
a

的别名,您所说的“工作”和“不工作”是什么意思?您观察到了什么错误消息或意外行为?@skrrgwsme意味着调用
Parent.a
pops Parent是否为未定义的错误它们是相同的,除非您具有循环依赖关系。问题一定出在你测试它的方式上。