var path = require("path"); var fs = require("fs"); var url = require("url"); // We want to load Readability and JSDOMParser, which aren't set up as commonjs libraries, // and so we need to do some hocus-pocus with 'vm' to import them on a separate scope // (identical) scope context. var vm = require("vm"); var readabilityPath = path.join(__dirname, "Readability.js"); var jsdomPath = path.join(__dirname, "JSDOMParser.js"); var scopeContext = {}; // We generally expect dump() and console.{whatever} to work, so make these available // in the scope we're using: scopeContext.dump = console.log; scopeContext.console = console; scopeContext.URL = url.URL; // Actually load files. NB: if either of the files has parse errors, // node is dumb and shows you a syntax error *at this callsite* . Don't try to find // a syntax error on this line, there isn't one. Go look in the file it's loading instead. vm.runInNewContext(fs.readFileSync(jsdomPath), scopeContext, jsdomPath); vm.runInNewContext(fs.readFileSync(readabilityPath), scopeContext, readabilityPath); module.exports = { Readability: scopeContext.Readability, JSDOMParser: scopeContext.JSDOMParser };