2015-09-15 39 views
2

我的意思是,如果我想要做的瀏覽器的東西,如呼叫EVAL,我可以這樣做:Node.js需要函數的父對象?

window['eval'](); 

正如在「調用EVAL用繩子」。

但是在Node中沒有窗口。有global,但這並不需要它。

什麼包含要求在節點上,這樣我可以做的:

???['require']();

我試圖在全球範圍內this[require]global['require'],我也試圖與require.prototyperequire.constructor但沒有運氣找到需要的功能父。

編輯:

require確實存在地方,因爲只是寫require('vm')例如,它的工作原理。

Node.js source包含NativeModule.requirenativeModule引用,但NativeModule沒有定義,當我嘗試使用它。

+0

我也很困惑...從文檔(https://nodejs.org/api/globals.html#globals_require):'要求模塊。請參閱模塊部分。 require''實際上並不是全局的,而是每個模塊的局部。' – Randy

+0

'window ['eval']'是對'eval'函數的引用,但是因爲它在窗口中,所以可以使用'eval'來代替。 nodejs中的'require'函數被注入,所以你可以直接使用它作爲'require',而不需要'prefix.require'。爲什麼你會想要使用'require'作爲動態函數?發佈你想要的東西:) –

+0

@AndreyPopov也許我想繞過一些檢查代碼的「要求」的話。因此,對於eval,它會像'var e ='ev'一樣工作。 var a ='al';窗口[e + a](code)' – Piwwoli

回答

1

module['require']最後爲我工作。如果有問題,我正在使用Node v0.10.35。

另外兩個全局查看需求函數可能是global['require']或甚至process['require']

+0

'process.require'對於我來說是未定義的(節點4)。 – Ginden

1

global['require']存在節點0.10+,所以你犯了一個錯誤,或者你正在使用一些非常古老的節點版本。

+0

我不得不使用'module ['require']'。我正在運行Node.js v0.10.35。但它現在有效:) – Piwwoli

+0

有趣 - 'module.require === global.require // false' – Ginden

相關問題