Node.js run module with a different this context.
Sources:
// index.js
var vm = require('vm');
var fs = require('fs');
var path = require('path');
// create mock window
var jsdomify = require('jsdomify').default;
jsdomify.create();
// create context
var exports = {};
var context = window;
context.require = require;
context.console = console;
context.exports = exports;
context.module = { module: { exports: exports } };
context.window = window;
// run script in context
var script = fs.readFileSync(path.join(__dirname, './module'));
vm.runInNewContext(script, context);// module.js
if (typeof window !== 'undefined' && this === window) {
console.log('browser environment');
} else {
console.log('node environment');
}