exports = mongoose = require('mongoose')
输出中的
exports.log = function() {
console.log(mongoose)
}
app.js中的
var mg = require('./db.js')
var output = require('./output.js')
output.log() //output mongoose
如果我将db.js更改为:
var mongoose = require('mongoose')
exports = mongoose
然后output.log()找不到mongoose了。
答案 0 :(得分:2)
javascript中的常见错误是在同一语句中声明几个变量彼此相等,期望您声明了一个局部变量。
var a = b = 42;
这将创建一个局部变量a
和一个全局变量b
。首先使b
等于42
,然后a
等于b
。
你想做的是
var a = 42, b = 42;
或
var b = 42;
var a = b;
在您的第一个db.js代码中,exports
已经是模块的本地代码,variable = mongoose = 'whatever';
创建一个名为mongoose
的全局变量。在剪切的第二个db.js代码中,您将mongoose
声明为本地。
答案 1 :(得分:0)
@DeaDEnD是对的。避免这种情况的简单方法是遵循以下模式:
var mongoose = module.exports = function () { }
由于CommonJS规范, module
已经是全局的,所以没关系。