我在许多模块中看到了这段代码:
var app = exports = module.exports = {};
但是我在严格模式下使用Node.js VM执行这些模块时遇到了一些问题。
这里有一个演示:
var code = `
'use strict'; // Works if I remove this line
var app = exports = module.exports;
`;
var vm = require('vm');
var vmModule = { exports: {} };
var context = vm.createContext({
exports: vmModule.exports,
module: vmModule
});
var script = new vm.Script(code);
script.runInContext(context);
console.log("ok");
如果我运行此代码,我会收到exports is not defined
错误消息。没有use strict
上面的代码可以正常工作。
为什么类似的声明适用于标准 Node 模块,但不适用于 vm 脚本?我应该以不同的方式声明上下文吗?