无法在Node.js中使用Winston记录错误

编程入门 行业动态 更新时间:2024-10-10 16:16:43

无法在Node.js中使用Winston记录<a href=https://www.elefans.com/category/jswz/34/1771449.html style=错误"/>

无法在Node.js中使用Winston记录错误

在运行以下代码时,控制台会说logger.log不是函数,即使我正在从index.js导出函数。

index.js

const winston = require('winston');
const error = require('./middleware/error');

const logger=winston.createLogger({transports:[new winston.transports.Console(),
                                               new winston.transports.File({filename:'logfile.log'})
                                              ]});

app.use(error);
module.exports = logger;

error.js

const winston = require('winston');
const logger = require('../index');

module.exports = function(err,req,res,next){
    //Log the exception 
    logger.log('error',err.message);

    res.status(500).send('Something failed.');
}

这是终端机所说的:

TypeError: logger.log is not a function
    at module.exports (C:\Users\hp\Desktop\YouStart\nodejs-mosh\vidly\5.13- Project- Restructure the App\vidly\middleware\error.js:8:12)
    at C:\Users\hp\Desktop\YouStart\nodejs-mosh\vidly\5.13- Project- Restructure the App\vidly\node_modules\express-async-errors\index.js:5:20
    at Layer.handle_error (C:\Users\hp\Desktop\YouStart\nodejs-mosh\vidly\5.13- Project- Restructure the App\vidly\node_modules\express\lib\router\layer.js:71
回答如下:

循环依赖永远不是一个好的模式。您正在强迫error.js解决其出口之前 index.js可以解决其出口-这可能会导致您的问题。

基本上应该在每种情况下都避免循环依赖。这很容易:您不需要error.js要求index.js,因为您可以直接导出一个函数,该函数使您可以将index.js中需要的内容作为参数传递。它看起来像这样:

index.js

const winston = require('winston');

const logger = winston.createLogger({transports:[new winston.transports.Console(),
                                                 new winston.transports.File({filename:'logfile.log'})
                                              ]});

const error = require('./middleware/error')(logger); //pass logger to error middleware  
app.use(error);

error.js

module.exports = function(logger) {
    //return function configured with logger to use as middleware
    return function(err,req,res,next) {
        //Log the exception 
        logger.log('error',err.message);

        res.status(500).send('Something failed.');
    }
};

更多推荐

无法在Node.js中使用Winston记录错误

本文发布于:2024-05-07 11:13:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755978.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   Node   js   Winston

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!