【问题标题】:How to share config folder between main app and library module?如何在主应用程序和库模块之间共享配置文件夹?
【发布时间】:2021-08-18 08:53:04
【问题描述】:

这是我设置 myNodeApp 的计划,其中包含以下文件夹: 配置、src、node_modules/@myCompany/logging

在@myCompany/logging 库中,我有这样的代码,

myWinston.js

const { createLogger } = require('winston');
const logger = createLogger({
    level: config.get('logging').level, // this config is the one from myNodeApp
    prettyPrint: true』);
module.exports = logger;

myLogger.js

const logger = require(./myWinston');
const warning = (myWarningMsg) => {
    logger.warn(myWarningMsg);
}
module.exports = { warning };

现在在主应用代码中, myApp.js

const { logger } = require('@myCompany/logging');
...
logger.warning('my warning msg here');
...

问题是库 @myCompany/logging 中的 myWinston.js,它需要来自主应用程序的日志记录级别。 从 myNodeApp/config 传递这些信息的最佳方式是什么?


另一个想法,看看它是否可以工作, @myCompany/logging 这个库有一个配置文件夹,可用于在这个库中进行测试。

为 myNodeApp 安装 @myCompany/logging 时,我可以使用 .npmignore 排除配置文件夹。因此日志记录将使用 myNodeApp 中的配置文件夹。

请评论?

【问题讨论】:

    标签: node.js winston


    【解决方案1】:

    我认为可以这样:

    1. 来自 npm 模块的记录器可以导出构造函数:
    // file in node_modules/@myCompany/logging/index.js
    const { createLogger } = require('winston');
    module.exports = exports = function(loggerConfig){
        return createLogger({
          level: loggerConfig.level,
          prettyPrint: loggerConfig.prettyPring
        });
    };
    
    
    1. 并且可以在index.js文件中这样使用,所以配置正确
    
    const config = require('./lib/config'); // all top level app config is loaded from some file in your project
    config.logger.appName = 'web'; // you can customize global config here, for example, you have 2 components - web server and background process, and appName can depict it
    
    const logger = require('@myCompany/logging')(config.logger); //here you instantiate logger with global config loaded
    
    logger.info('Web application is preparing to start!');
    
    //lot of code here
    
    
    

    【讨论】:

    • 所以在@myCompany/logging 的文件夹中,我不需要myWinston.js,只需要index.js 和myLogger.js ?
    • 据我所知nodejs,是的
    猜你喜欢
    • 2018-05-23
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多