2017-01-16 90 views
3

我將模塊中的應用程序分開,但每個模塊都具有必須記錄的功能。所以我的想法是創建一個winstonConfig.js文件來配置winston,然後在每個需要記錄事件的模塊中輸入require這個文件。這裏的winstonConfig.js:無法將winston放入nodejs模塊中

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; 

(?順便說一句,有一次出口一切辦法)

但是當我要求(」 ./ winstonConfig.js')在我的index.js,我得到:

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

TypeError: transport is not a constructor 

但完全相同的代碼(不包括出口)將沒有任何問題放在index.js時(問題是,那麼我不能把這導入到其他模塊)

回答

0

我得到了同樣的工作,與ne的錯誤W項目,但當我試圖使用「logger.transports.DailyRotateFile」。然後我意識到我的代碼(這是從另一個項目中複製的)只適用於winston 1(在另一個項目中使用相同的版本)。所以,我剛剛降級的lib第1版,一切工作正常:

$ npm uninstall winston --save 
$ npm install [email protected] --save 

但是,如果你想使用溫斯頓2,我發現下面的解決方案使用DailyRotateFile - 和可能,有一個類似的解決方案使用其他類型的傳輸。

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

它看起來像你錯過:

require('winston-riak'); 

我得到同樣的錯誤與您的代碼。

如果我評論Riak運輸的增加,我不會收到任何錯誤。

如果我需要溫斯頓 - 了Riak:

var winston = require('winston'); 
require('winston-riak'); 

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


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

我得到錯誤:類型錯誤:riakjs.getClient不是一個函數。這似乎是因爲'winston-riak'試圖執行riakjs.getClient(options),但是,根據https://github.com/mostlyserious/riak-js/issues/234,getClient是導出的函數,而不是導出對象的方法。 Winston-riak模塊5年未更新。它似乎與2年前更新的當前riak-js不兼容。