我知道模塊加載是如何加載假設在node.js中工作,但我沒有觀察到正確的行爲(並且它看起來實際上看起來有點不一致調用require不會返回相同的對象
使用8.2.1的NodeJS上this answer的評論),我有以下結構:
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')
,我會得到相同的配置實例。我實際看到的是,當我require('winston')
在db/index.js
中時,默認的winston
實例在內存中,根本沒有配置。我也通過了require.cache
;沒有其他模塊被添加到緩存中,所以據我所知,如果緩存工作正常,則應該返回相同的配置實例。我已驗證log/index.js
中的代碼在db/index.js
中的模塊正在加載之前正在調用。
任何想法?我應該在所有依賴模塊中使用require
我的./log
模塊嗎?
不應該需要配置的記錄器嗎? – Icepickle