调用rfs.createStream时报错Cannot read property 'createStream' of undefined如何解决
配置服务日志报错解决方案
报错原因
TypeError: Cannot read property 'createStream' of undefined 报错核心是代码中调用的rfs对象未被正确初始化,同时代码存在语法参数错误:
- 未导入
rotating-file-stream模块就直接调用rfs.createStream方法 createStream方法的第二个配置参数缺少对象大括号包裹,不符合语法规范
解决步骤
- 首先安装所需依赖,在项目目录执行命令:
npm install morgan rotating-file-stream express - 修正代码的导入逻辑和参数写法,完整可运行代码如下:
// 提前导入所有依赖 const express = require('express'); const app = express(); const morgan = require('morgan'); const rfs = require('rotating-file-stream'); const path = require('path'); const fs = require('fs'); // 自动创建日志存储目录,避免目录不存在引发的二次报错 const logDir = path.join(__dirname, 'public', 'logs'); if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir, { recursive: true }); } // 修正createStream参数写法,第二个配置项用大括号包裹 const rfsStream = rfs.createStream('server.log', { size: '10M', interval: '1d', path: logDir }); app.use(morgan('combined', { stream: rfsStream })); // 测试服务启动 app.listen(3000, () => { console.log('服务启动成功,端口3000'); });
验证方法:启动服务后访问任意接口,查看
public/logs目录下是否生成server.log日志文件,且接口请求记录正常写入即为配置成功。
内容的提问来源于stack exchange,提问作者La Vie
相关产品推荐
相关产品推荐

