import 语句 returns 模块成员未定义

import statement returns module member as undefined

模块(./lib/myModule.js):

const X = 10;

export default { X }

主模块(./index.js):

案例一:

import { X } from './lib/myModule'

console.log(X) // undefined

案例二:

import myModule from './lib/myModule'

const { X } = myModule;

console.log(myModule.X) // 10
console.log(X) // 10

为什么在使用对象匹配符号 returns X 作为未定义并导入完整对象时,成员保留其值?第一种情况有什么问题?

我正在使用 Babel 将 ES 6 代码转换为 preset-es2015

那是因为 import 语句没有使用解构赋值。在第一种情况下,您尝试导入未导出的成员 X。在第二种情况下,您将导入默认成员,然后使用 destructuring assignment.

从中提取 X

在第一种情况下,Babel 将 console.log() 行转换为:

console.log(_myModule.X); // undefined

而在第二种情况下你会得到这个:

console.log(_myModule2.default.X);