为什么我不能从模块外部引用属性集?

时间:2019-02-22 10:43:06

标签: javascript node.js

我有一个简单的代码:

app.js

var pool=require('.database.js')
var oneApi=require('./api/one_api.js')
oneApi.init(pool)

one_api.js

var pool

(function() {

    module.exports.init=function (conn) {
        pool=conn
    }

    module.exports.some_call = async (irrelevant, params) => {
        ...
        var queryResult=await pool.query("SELECT * FROM Something)
        ...
    }
})();

哪个工作正常。但是,我想简化一下:

app.js

var pool=require('.database.js')
var oneApi=require('./api/one_api.js')
oneApi.pool=pool

one_api.js

(function() {
    module.exports.some_call = async (irrelevant, params) => {
        ...
        var queryResult=await pool.query("SELECT * FROM Something)
        ...
    }
})();

这里的池变得不确定。

你能告诉我为什么吗?

1 个答案:

答案 0 :(得分:0)

请注意,您可以访问init(),因为您是通过module.exports.init导出它的。但是您的var pool从未导出,因此对于one_api模块,它保持“私有”状态。您必须将其导出:module.exports.pool