【问题标题】:Why is global.module undefined within a file but in the Node REPL it is an object on global?为什么 global.module 在文件中未定义,但在 Node REPL 中它是全局对象?
【发布时间】:2016-11-12 20:26:36
【问题描述】:

如果我:

console.log(global.module);

在文件 foo.js 中执行它:

node foo.js

它输出未定义。但是,如果我在启动 Node REPL 时访问全局对象上的相同属性,它就是一个对象。 get 的实际对象作为参数传递给模块包装函数 module

为什么它不在全局对象的文件中,但在 REPL 中?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    在模块文件的上下文中,module 不是全局变量,它实际上是一个局部变量。 Node 模块代码在执行之前实际上是这样包装的:

    (function (exports, require, module, __filename, __dirname) { 
    

    所有这些变量对于每个模块都必须是唯一的,因此它们不能是全局变量。

    然而,在 REPL 和其他在全局范围内评估的代码中,这些变量被添加为全局对象的属性,因此您仍然可以使用 require 之类的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2018-08-06
      • 1970-01-01
      相关资源
      最近更新 更多