TypeError: winston.createLogger is not a constructor
TypeError: winston.createLogger is not a constructor
我正在尝试做的事情: 为 Nodejs 应用程序创建一个记录器
代码:
const winston = require('winston');
const fs = require('fs');
const moment = require('moment');
// const envLogger;
const logDir = 'logs/aws';
// Create the log directory if it does not exist
fs.access(logDir, (err) => {
if (err) {
fs.mkdir(logDir, ()=>console.log('Log file created'));
}
});
const timestampFormat = () => {
return moment().format('YYYY-MM-DD hh:mm:ss');
};
const logger = new winston.createLogger({
transports: [
new winston.transports.Console({
timestamp: timestampFormat,
colorize: true,
prettyPrint: true,
level: 'info',
}),
],
});
console.log('Created logger');
module.exports = logger;
运行 在 Amazon EC2 实例上,出现以下错误:
[2019-01-03T16:38:26.580Z][error][sql]: uncaughtException: winston.createLogger is not a constructor
TypeError: winston.createLogger is not a constructor
at Object.<anonymous> (/###/common/helper/logger.js:19:16)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
package.json
上的温斯顿版本
"winston": "^3.0.0-rc1"
根据这些链接,这似乎是版本 3 上 Winston.logger 的一个众所周知的问题 - Node js logging - winston.Logger is not a constructor and
但是我在 v3 上遇到了同样的问题,这不应该发生。该应用程序在我的本地计算机上运行良好,问题仅发生在 EC2 实例 运行 Amazon Linux AMI 2.
本地的 Winston 版本 Mac:
├─┬ apidoc@0.17.6
│ └── winston@2.3.1
├─┬ db-migrate@0.10.7
│ └─┬ prompt@1.0.0
│ └── winston@2.1.1
└── winston@3.0.0-rc1
EC2 实例上的 Winston 版本:
├─┬ apidoc@0.17.6
│ └── winston@2.3.1
├─┬ db-migrate@0.10.7
│ └─┬ prompt@1.0.0
│ └── winston@2.1.1
└── winston@3.1.0
我终于通过从 package.json 文件中删除插入符号 (^) 解决了这个问题
从
编辑package.json这一行
"winston": "^3.0.0-rc1"
至
"winston": "3.0.0-rc1"
这将确保只安装 v3.0.0。
我正在尝试做的事情: 为 Nodejs 应用程序创建一个记录器
代码:
const winston = require('winston');
const fs = require('fs');
const moment = require('moment');
// const envLogger;
const logDir = 'logs/aws';
// Create the log directory if it does not exist
fs.access(logDir, (err) => {
if (err) {
fs.mkdir(logDir, ()=>console.log('Log file created'));
}
});
const timestampFormat = () => {
return moment().format('YYYY-MM-DD hh:mm:ss');
};
const logger = new winston.createLogger({
transports: [
new winston.transports.Console({
timestamp: timestampFormat,
colorize: true,
prettyPrint: true,
level: 'info',
}),
],
});
console.log('Created logger');
module.exports = logger;
运行 在 Amazon EC2 实例上,出现以下错误:
[2019-01-03T16:38:26.580Z][error][sql]: uncaughtException: winston.createLogger is not a constructor
TypeError: winston.createLogger is not a constructor
at Object.<anonymous> (/###/common/helper/logger.js:19:16)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Module._compile (internal/modules/cjs/loader.js:722:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
package.json
上的温斯顿版本"winston": "^3.0.0-rc1"
根据这些链接,这似乎是版本 3 上 Winston.logger 的一个众所周知的问题 - Node js logging - winston.Logger is not a constructor and
但是我在 v3 上遇到了同样的问题,这不应该发生。该应用程序在我的本地计算机上运行良好,问题仅发生在 EC2 实例 运行 Amazon Linux AMI 2.
本地的 Winston 版本 Mac:
├─┬ apidoc@0.17.6
│ └── winston@2.3.1
├─┬ db-migrate@0.10.7
│ └─┬ prompt@1.0.0
│ └── winston@2.1.1
└── winston@3.0.0-rc1
EC2 实例上的 Winston 版本:
├─┬ apidoc@0.17.6
│ └── winston@2.3.1
├─┬ db-migrate@0.10.7
│ └─┬ prompt@1.0.0
│ └── winston@2.1.1
└── winston@3.1.0
我终于通过从 package.json 文件中删除插入符号 (^) 解决了这个问题
从
编辑package.json这一行"winston": "^3.0.0-rc1"
至
"winston": "3.0.0-rc1"
这将确保只安装 v3.0.0。