卷起局部variables掩蔽全局variables?
在node
遇到奇怪的行为。 我有一个emscripten编译的程序,我想用作一个库。 emscripten
使用一个variablesModule
来控制运行时行为,并生成类似下面的./lib/g.js
代码。 在浏览器中, Module
正确地从index.js
定义的全局./lib/g.js
的本地var
。 但是,在node
,这似乎并不是这种情况。 构造: var Module = Module || {};
var Module = Module || {};
抹去我的全球Module
。
index.js
:
global.Module = { name: 'Module' }; var g = require ( './lib/g.js' );
./lib/g.js
:
console.log ( 'Module: ', Module ); var Module = Module || {};
node index.js
输出:
模块:未定义
我假设在g.js
, Module
只是在本地范围内被提升和取消引用,屏蔽了全局版本(在global.Module
)。 任何人都可以提出一个解决办法?
这个问题可以通过编辑emscripten
生成的代码来使用var Module = global.Module || {}
var Module = global.Module || {}
。 虽然这是一个可能的解决方法,但我宁愿不编辑由emscripten
生成的代码。
你可以看看使用rewire
var rewire = require("rewire"); var g = rewire("./lib/g"); g.__set__("Module", {name: "Module"});
任何人都可以提出一个解决办法?
只要删除var
关键字。