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

标签 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)
        ...
    }
})();

此处池变得未定义。

你能告诉我这是为什么吗?

最佳答案

请注意,您可以访问 init(),因为您是通过 module.exports.init 导出它的。但是您的 var pool 永远不会导出,这样它对于 one_api 模块来说保持“私有(private)”。您必须导出它:module.exports.pool

关于javascript - 为什么我不能引用模块外部的属性集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54825321/

相关文章:

javascript - 如何在 Jquery 中列出值

javascript - Express、csvtojson 和 node-walk 出现“结束后写入”错误

node.js - 类型错误 : LocalStrategy requires a verify callback

javascript - Nodejs Express 在 POST 上提供静态内容

javascript - 如何用 Prestashop 产品列表中的图片替换第三个产品?

javascript - 如何在 Javascript 中生成随机柔和(或更亮)的颜色?

javascript - 图表 js : Update line chart having two data sets

javascript - 用自定义 javascript 全局命名空间替换窗口

node.js - 服务容器无法使用 docker-compose 连接到 MongoDB 容器

node.js - 在 Docker 容器中调试 Nodejs