如何解决带有 ES 模块的 log4js-node?
我正在尝试在我的代码中设置 log4js-node。 由于我想从不同的 .js 文件写入相同的日志文件,因此我将其设置为 per the documentation:
const appSettings = {
log4js: {
traceLogConfig: {
appenders: {
fileAppender: { type: 'file',filename: `./logs/${settings.custid}/${Date.Now()}.log`},consoleAppender: { type: 'console' }
},categories: {
default: { appenders: ['fileAppender','consoleAppender'],level: 'trace'}
}
}
}
};
module.exports = appSettings;
在文件中:
import log4js from 'log4js';
//Setting up logger
const { traceLogConfig } = require('./logs').log4js;
log4js.configure(traceLogConfig);
const logger = log4js.getLogger();
const { traceLogConfig } = require('./logs').log4js; ^
ReferenceError: require 未在 ES 模块范围内定义,您可以使用 import 这个文件被当作 ES 模块,因为它 有一个“.js”文件扩展名和 'package.json' 包含“类型”: “模块”。要将其视为 Commonjs 脚本,请将其重命名为使用 '.cjs' 文件扩展名。
我不知道如何将这种结构 (const { traceLogConfig } = require('./logs').log4js;) 转换为 ES6 模块。 我试过了:
import {traceLogConfig} from './logs'.log4js
import {traceLogConfig} from './logs.log4js'
import {traceLogConfig} from './logs.js.log4js'
通常,visual studio code 会给我一个小灯,显示如何将其自动转换为 ES6 模块兼容代码,但这次没有显示。
解决方法
好的,我找到了答案。 您需要先像这样导入整个文件:
import appSettings from '../logs.js';
那么调用的时候需要引用具体的设置:
log4js.configure(appSettings.log4js.traceLogConfig);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。