javascript - 无法将 winston 放入 nodejs 模块中

标签 javascript node.js logging winston

我将我的应用程序分成模块,但每个模块都有我必须记录的功能。所以我的想法是创建一个文件 winstonConfig.js 来配置 winston,然后我在每个需要记录内容的模块中 require 这个文件。这是 winstonConfig.js:

var winston = require('winston');

winston.add(winston.transports.Riak, { level: 'warn' });

winston.add(winston.transports.File, { filename: 'mylogfile.log', level: 'silly' });

exports.log = winston.log;
exports.debug = winston.debug;
exports.error = winston.error;

(顺便说一句,有没有办法一次导出所有内容?)

但是当我在我的 index.js 中 require('./winstonConfig.js') 时,我得到:

node_modules/winston/lib/winston/logger.js:481
  var instance = created ? transport : (new (transport)(options));
                                        ^

TypeError: transport is not a constructor

但是完全相同的代码(没有导出)将在放入 index.js 时没有任何问题(问题是我无法将其导入其他模块)

最佳答案

我在一个新项目中遇到了同样的错误,但是当我尝试使用“logger.transports.DailyRotateFile”时。然后我意识到我的代码(从另一个项目复制而来)只适用于 winston 1(另一个项目使用的相同版本)。所以,我只是将 lib 降级到版本 1,一切正常:

$ npm uninstall winston --save
$ npm install winston@1.x.x --save

但是如果你想使用 winston 2,我在下面找到了使用 DailyRotateFile 的解决方案 - 并且可能有一个类似的解决方案来使用其他类型的传输。

var winston = require('winston'), expressWinston = require('express-winston');
winston.transports.DailyRotateFile = require('winston-daily-rotate-file');

关于javascript - 无法将 winston 放入 nodejs 模块中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669052/

相关文章:

MySQL日志文件配置

javascript - 在 Three.js 中旋转立方体纹理

javascript - 如何使用AngularJS使这两部分重复?

node.js - Node-SOAP 未返回预期结果

javascript - 代码拆分如何与导入/导出、babel 和 webpack 一起使用?

javascript - 如何创建具有最大元素的唯一键数组?

logging - Matplotlib - 当我切换到半对数图时数据消失

javascript - Redux-Form 字段不可编辑

javascript - 无法以 Angular 显示用户名

postgresql - macOS 上的 PostgreSQL 日志在哪里?