我将我的应用程序分成模块,但每个模块都有我必须记录的功能。所以我的想法是创建一个文件 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/