遇到node
中的奇怪行为。我有一个emscripten编译的程序,我想用作库。 emscripten
使用变量Module
来控制运行时行为,并在下面生成./lib/g.js
之类的代码。在浏览器中,Module
从index.js
中定义的全局到var
中的本地./lib/g.js
正确别名。但是,在node
中,似乎并非如此。构造: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
的输出:
Module: undefined
我假设在g.js
中,Module
仅在本地范围内被提升和解除引用,屏蔽了全局版本(在global.Module
中)。任何人都可以提出解决方案吗?
通过编辑emscripten
生成的代码以使用var Module = global.Module || {}
,可以解决此问题。虽然这是一种可行的解决方法,但我不想编辑emscripten
生成的代码。
答案 0 :(得分:0)
有人可以建议解决方法吗?
只需删除var
关键字。
答案 1 :(得分:0)
您可以查看使用rewire
var rewire = require("rewire");
var g = rewire("./lib/g");
g.__set__("Module", {name: "Module"});