Import语句返回未定义的模块成员

import statement returns module member as undefined

本文关键字:模块 成员 未定义 语句 返回 Import      更新时间:2023-09-26

Module (./lib/myModule.js):

const X = 10;
export default { X }

主模块(./index.js):

案例1:

import { X } from './lib/myModule'
console.log(X) // undefined

案例2:

import myModule from './lib/myModule'
const { X } = myModule;
console.log(myModule.X) // 10
console.log(X) // 10

为什么使用对象匹配表示法返回X为未定义并导入完整对象的成员保持他的值?第一种情况有什么问题?

我使用Babel转换ES 6代码与preset-es2015

这是因为import语句没有使用解构赋值。在第一种情况下,您试图导入未导出的成员X。在第二种情况下,您导入默认成员,然后使用解构赋值从中提取X

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

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

console.log(_myModule2.default.X);