2017-01-16 9 views
3

私はアプリケーションをモジュールで分けていますが、これらのモジュールにはそれぞれ私が記録しなければならない機能があります。だから、私の考えはwinstonConfig.jsファイルを作成してwinstonを構成してから、requireこのファイルをログに記録する必要があるモジュールごとに作成することでした。私は(」./ winstonConfig.js')必要とするとき私が得る、私のindex.jsに(ところで、一度にすべてをエクスポートする方法はありますか?)nodejsモジュール内にwinstonを置くことができません

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です:

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(他のプロジェクトで使用されているものと同じバージョン)で動作することに気付きました。だから、私はバージョン1にlibが格下げされ、すべてが正常に働いていた:

$ 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にする必要がある場合:例外TypeError::

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と互換性がないようです。

関連する問題