ecmascript-6 - ES6 导出全局符号
问题描述
我正在定义一个我拥有全局资源的文件
import winston from 'winston';
const LOGGER_KEY = Symbol.for('loggerKey');
const globalSymbols = Object.getOwnPropertySymbols(global);
const hasLogger = (globalSymbols.indexOf(LOGGER_KEY) > -1);
if (!hasLogger) {
const formatter = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.printf(
info => `${info.timestamp} ${info.level}: ${info.message}`,
),
);
const transportConsole = new (winston.transports.Console)({
format: formatter,
level: 'info',
});
const logger = winston.createLogger({
transports: [
transportConsole,
],
});
global[LOGGER_KEY] = logger;
};
export {
global[LOGGER_KEY] as logger
}
}
在 ES5 中,我曾经像这样导出并且它有效
module.exports = {
logger: global[LOGGER_KEY],
}
但如果这在 ES6 中是可能的,我不这样做
解决方案
你不能用 ES6 那样做,但是通过首先将 object 属性分配给一个变量可以很容易地解决这个问题:
const logger = global[LOGGER_KEY];
export {logger}
推荐阅读
- angular - Angular 嵌套 ngFor - 内部循环访问的总数
- javascript - 如何在 Raylib 中增加变量
- visual-studio - 在 Manage Extensions,VS 2019 中强制关闭现有连接
- plot - 按类别着色,而不是 stata 中的期间
- python - 如何使用 Python 的 POST 请求处理重定向?
- c++ - 在 C++ 结构中初始化静态数组的最佳策略
- sql - 如何获取相对于 BigQuery 中的上一行发生更改的列列表?
- r - 数据长度与 CRAN 检查中矩阵警告的大小不同
- pandas - 尝试访问 Pandas DataFrame 的列时出现 KeyError
- python - 如何在 Python 中比较字符串?