【问题标题】:Node.js require-function parent object?Node.js 需要函数父对象?
【发布时间】:2015-09-15 18:29:17
【问题描述】:

我的意思是如果我想在浏览器中做一些事情,比如调用 eval,我可以这样做:

window['eval']();

如“用字符串调用 eval”。

但在 Node 中没有窗口。有global,但里面没有require。

node 中包含 require 的内容,以便我做:

???['require']();

我在全局范围内尝试了 this[require]global['require'],还尝试使用 require.prototyperequire.constructor 找到 require 函数父级,但没有运气。

编辑:

require 确实存在某处,因为例如只需写require('vm'),它就可以工作。

Node.js source 包含 NativeModule.requirenativeModule 引用,但是当我尝试使用它时,NativeModule 没有定义。

【问题讨论】:

  • 我也很困惑...来自文档 (nodejs.org/api/globals.html#globals_require):To require modules. See the Modules section. require isn't actually a global but rather local to each module.
  • window['eval'] 是对eval 函数的引用,但是因为它在窗口中,所以您可以使用eval 代替。 nodejs中的require函数是注入的,所以你可以直接使用require,不需要prefix.require。为什么你会想要使用require 作为动态函数?发布您想要的内容:)
  • @AndreyPopov 也许我想绕过检查“require”字样代码的东西。所以对于 eval 它会像var e = 'ev'; var a = 'al'; window[e+a](code)

标签: javascript node.js require


【解决方案1】:

global['require'] 存在于 Node 0.10+ 中,所以你犯了一个错误,或者你正在使用一些非常古老的 Node 版本。

【讨论】:

  • 我必须使用module['require']。我正在运行 Node.js v0.10.35。但它现在可以工作了:)
  • 有趣 - module.require === global.require // false
【解决方案2】:

module['require'] 最终为我工作。我正在使用 Node v0.10.35 以防万一。

查找 require 函数的另外两个全局变量可能是 global['require'] 甚至可能是 process['require']

【讨论】:

  • process.require 对我来说是未定义的(节点 4)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
相关资源
最近更新 更多