【发布时间】:2018-03-24 23:48:31
【问题描述】:
我知道 supposed 模块加载如何在 node.js 中工作,但我没有观察到正确的行为(实际上,如果您查看 cmets this answer)
使用nodejs 8.2.1,我的结构如下:
app
|
+ server.js
+ log
| |
| + index.js
+ db
|
+ index.js
在 server.js 中,我调用 require('./log'),在 /log/index.js 中,我 require('winston') 并像这样配置它:
let logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
name: 'console',
level: logLevel,
handleExceptions: true,
json: false,
colorize: process.env.NODE_ENV === 'dev',
timestamp: true
})
]
});
根据this answer,我应该能够从任何其他模块只require('winston'),我会得到相同的配置实例。我实际看到的是,当我在db/index.js 中require('winston') 时,默认的winston 实例在内存中,根本没有配置。我也通过了require.cache;没有其他模块被添加到缓存中,据我所知,如果缓存正常工作,应该返回相同的配置实例。我已经验证log/index.js 中的代码在db/index.js 中的模块也被加载之前被调用。
有什么想法吗?我是否应该在所有依赖模块中只使用requireing 我的./log 模块?
【问题讨论】:
-
您不需要配置的记录器吗?
标签: javascript node.js require winston