2016-07-26 39 views
0

(這是在https://github.com/daurnimator/lua.vm.js/issues/57#issuecomment-235377158node.js中如何實現'local to module'對象?

在node.js中,某些函數/對象不是真正的全局變量,而是'每個模塊都是本地的',例如,從https://nodejs.org/api/all.html#globals_require

要求實際上並不是一個全局的,而是對每個模塊都是本地的。

global.require似乎Node.js的REPL工作:

$ node 
> require 
{ [Function: require] 
    resolve: [Function: resolve], 
    main: undefined, 
    extensions: { '.js': [Function], '.json': [Function], '.node': [Function] }, 
    cache: {} } 
> global.require 
{ [Function: require] 
    resolve: [Function: resolve], 
    main: undefined, 
    extensions: { '.js': [Function], '.json': [Function], '.node': [Function] }, 
    cache: {} } 

不過,這並不在文件中工作。

require,module,exports等是如何實現的?

有沒有一種方法能夠可靠地訪問require給出global

+1

我不認爲這是一個重複。 OP正在詢問如何在不需要訪問局部範圍變量(如require)的情況下需要構建內部變量,但可以訪問全局範圍。 –

+1

所以通過節點內部模塊代碼挖掘,似乎所有的內置模塊通過全局對象本身的魔法隱藏屬性公開。 https://github.com/nodejs/node/blob/e22ffefff221caee264ab0b88691478a03ab1862/lib/internal/module.js#L54-L96 –

回答

0

你可以在你的主文件中添加這樣的事情。

global.lodash = require('lodash'); 

這將使lodash在全局範圍內(在所有模塊中)可用。但並不真正推薦混淆全球範圍。