卷起局部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.jsModule只是在本地范围内被提升和取消引用,屏蔽了全局版本(在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关键字。