我正在使用module.exports导出函数。 大部分都是这样导入的:
const logger = require('../middleware/logger')
我明白,如果我需要传递一个参数给我将要使用的函数:
const logger = require('../middleware/logger')(arg)
但最近我遇到了一个需要用空括号调用的函数:
require('./startup/db')()
否则将不会建立到数据库的连接。 存在来自“。/startup/db”的代码:
const mongoose = require('mongoose')
mongoose.set('useCreateIndex', true)
const logger = require('../middleware/logger')
module.exports = function () {
mongoose.connect('mongodb://localhost:27017/data', {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => logger.info('Connected to MongoDB'))
}
谁能解释一下当require('module')
不起作用而我应该使用require('module')()
来代替吗?
这是因为‘。/startup/db'
返回的是函数而不是值。 需要调用此函数,否则只存储对该函数的引用。
现在,由于此函数不需要参数,只需调用,因此不向其传递任何值。