0
(這是在https://github.com/daurnimator/lua.vm.js/issues/57#issuecomment-235377158)node.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
?
我不認爲這是一個重複。 OP正在詢問如何在不需要訪問局部範圍變量(如require)的情況下需要構建內部變量,但可以訪問全局範圍。 –
所以通過節點內部模塊代碼挖掘,似乎所有的內置模塊通過全局對象本身的魔法隱藏屬性公開。 https://github.com/nodejs/node/blob/e22ffefff221caee264ab0b88691478a03ab1862/lib/internal/module.js#L54-L96 –