2017-01-16 7 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 

Но если вы хотите использовать Winston 2, я обнаружил, что ниже решение использовать DailyRotateFile - и, вероятно, существует аналогичное решение использовать другие виды транспорта.

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

Похоже, вы пропустили:

require('winston-riak'); 

я получаю ту же ошибку с кодом.

Если я прокомментирую добавление транспорта Riak, я не получаю ошибки.

Если я требую Winston-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; 

Я получаю сообщение об ошибке: TypeError: riakjs.getClient не является функцией. Это связано с тем, что «winston-riak» пытается выполнить riakjs.getClient (параметры), но за https://github.com/mostlyserious/riak-js/issues/234 getClient - это экспортированная функция, а не метод экспортируемого объекта. Модуль winston-riak не обновлялся в течение 5 лет. Кажется, он несовместим с текущим riak-js, который был обновлен 2 года назад.

 Смежные вопросы

  • Нет связанных вопросов^_^