在node.js(ES6 / Babel)中导入X和导入* as X之间的区别?
我有一个lib
用ES6编写的node.js库(与Babel一起编译),在其中导出了以下子模块:
"use strict";import * as _config from './config';
import * as _db from './db';
import * as _storage from './storage';
export var config = _config;
export var db = _db;
export var storage = _storage;
如果从我的主要项目中,我包括这样的图书馆
import * as lib from 'lib';console.log(lib);
我可以看到正确的输出,并且可以按预期工作{ config: ... }
。但是,如果我尝试包含这样的库:
import lib from 'lib';console.log(lib);
会的undefined
。
有人可以解释这里发生了什么吗?这两种导入方法不应该等效吗?如果没有,我想念什么?
回答:
import * as lib from 'lib';
正在请求一个具有所有“ lib”命名出口的对象。
export var config = _config;export var db = _db;
export var storage = _storage;
被命名为exports,这就是为什么您最终得到一个像您一样的对象的原因。
import lib from 'lib';
正在要求default
出口lib
。例如
export default 4;
会lib === 4
。它不会获取命名的导出。要从默认导出中获取对象,您必须显式地执行
export default { config: _config,
db: _db,
storage: _storage
};
以上是 在node.js(ES6 / Babel)中导入X和导入* as X之间的区别? 的全部内容, 来源链接: utcz.com/qa/399809.html