Node.js v19.8.1使用Console模块报错TypeError: Console is not a constructor
解决Node.js Console模块构造函数报错问题
问题原因
你遇到的TypeError: Console is not a constructor错误,核心原因是ES模块导入方式错误,同时代码遗漏了fs模块的导入。
修正步骤
1. 修正ES模块导入语句
node:console模块的Console是命名导出成员,并非默认导出,不能直接用import Console from 'node:console';,需改为命名导入:
import { Console } from 'node:console'; import fs from 'node:fs'; // 必须导入fs模块才能使用文件流
2. 确保CommonJS环境的完整性
CommonJS的导入语法本身正确,但同样需要先导入fs模块:
const { Console } = require('node:console'); const fs = require('node:fs'); // 必须导入fs模块才能使用文件流
完整可运行代码示例
ES模块(需在package.json中设置"type": "module")
import { Console } from 'node:console'; import fs from 'node:fs'; const output = fs.createWriteStream('./stdout.log'); const errorOutput = fs.createWriteStream('./stderr.log'); const logger = new Console({ stdout: output, stderr: errorOutput }); const count = 5; logger.log('count: %d', count);
CommonJS
const { Console } = require('node:console'); const fs = require('node:fs'); const output = fs.createWriteStream('./stdout.log'); const errorOutput = fs.createWriteStream('./stderr.log'); const logger = new Console({ stdout: output, stderr: errorOutput }); const count = 5; logger.log('count: %d', count);
补充说明
- 全局
console是Node.js自动注入的实例,但自定义Console实例必须严格遵循模块导出规则导入构造函数。 - 运行代码前需确保当前目录有写入权限,否则
createWriteStream会抛出权限错误。
内容的提问来源于stack exchange,提问作者user3877654
相关产品推荐
相关产品推荐

