如何在 Nodejs 中的多个文件中使用一个库

How to use a library in multiple files in Nodejs

我想使用 Winston 登录我的 nodejs express 项目。在我的主文件(server.js)中,我有以下代码:

const winston = require('winston');
winston.level = process.env.LOG_LEVEL
winston.log('info', 'Hello log files!')

我也想在其他文件中使用这个库,所以我是否必须将这两行添加到我想使用它的每个文件中,或者有更好的方法来做到这一点。

您可以创建 customWinston.js 文件:

let winston = require('winston');
winston.level = process.env.LOG_LEVEL
winston.log('info', 'Hello log files!')

exports.customWinston = winston;

然后需要您的自定义温斯顿:

let customWinston = require('./customWinston').customWinston;

可以这样导出调用。

const winston = require('winston');
winston.level = process.env.LOG_LEVEL
module.exports = winston;

在其他文件中

const winston = require('/path/to/winston');
winston.log('blah blah');

或者,将其设为全局并调用它。 (不推荐)

const winston = require('winston');
winston.level = process.env.LOG_LEVEL
global.WINSTON = winston;

...

// other file
WINSTON.log('blah')

执行此操作的首选方法是将自定义记录器添加到 winston 对象:

var winston = require('winston');

// add a new logger to the winston object
winston.loggers.add('logger1', {
  console: {
    level: 'silly',
    colorize: true,
    label: 'Console One'
  },
  file: {
    filename: '/path/to/your/logfile.log'
    level: process.env.LOG_LEVEL
  }
}

按照上面的代码段所述设置记录器后,您可以 "get" 应用程序中任何其他文件中的记录器:

var winston = require('winston');

// get your preconfigured logger
var myLogger = winston.loggers.get('logger1');

// start logging!
myLogger.error('FooError');
myLogger.log('warn', 'Exiting application');

也是这种方式,在winston文档中是这样描述的:Winston Docs