【问题标题】:nodejs access to modulenodejs访问模块
【发布时间】:2016-03-16 20:17:00
【问题描述】:

nodejs 是否有一些我不需要的全局模块? 我只是想知道为什么我的代码在一段时间前有效)))

module.exports = {
    get: function(req, res){
        //some code here
        _.map(req.query.data, function (val, key) {
            //come code here
        });
        //some code here
        async.parallel([......])


        re.send(.....)   
    }
}

我不需要下划线和异步模块,它一直工作到今天。今天它抛出了错误。基本上我在文件顶部添加了“var async = require('async)”,它又开始工作了。 但是我没有添加 _ = require('underscore') 并且仍然可以访问所有下划线方法。

谁能帮我解决这个问题?如有任何建议,我将不胜感激

【问题讨论】:

  • 模块有自己的“全局”范围,所以它们不能访问其他模块库。能否提供完整的模块代码?
  • 所有模块应该在它们依赖的其他模块中require()。这就是使模块可重用的方式。将自己附加到全局对象的模块通常是一种不好的做法。这样做可能会在其他模块中节省一些 require() 语句,但是它会使事情依赖于加载顺序,并且如果单独使用它会使模块无法工作。如果不查看您的整个项目,我们就无法知道您发生了什么情况。但是,您可以通过要求您的模块使用的所有东西来“修复”您的代码。

标签: javascript node.js


【解决方案1】:

在 node.js 中有一个 global 对象,它附有许多东西。如果在任何其他本地范围内找不到,Node 会尝试在 global 对象中查找变量。

我会找你做的事情global._ = require('underscore')。

另外,请检查您的 underscore 版本,因为我知道用于在需要时始终将 _ 变量导出到全局范围的库。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    我发现那是什么。在我有的其他模块中

    var module_name = require('module_name');
        module_name2 = require('module_name_2');
    

    所以 module_name2 在全局范围内。 谢谢你的回答

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 2020-09-25
      相关资源
      最近更新 更多