Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jacintoface/66748623fb7ca00ee140921f0aa8ffd7 to your computer and use it in GitHub Desktop.
Save jacintoface/66748623fb7ca00ee140921f0aa8ffd7 to your computer and use it in GitHub Desktop.
node编译字符串为模块
function requireFromString(src, filename) {
var Module = module.constructor;
var m = new Module();
m._compile(src, filename);
return m.exports;
}
console.log(requireFromString('module.exports = { test: 1}'));
@jacintoface
Copy link
Author

function requireFromString(string, filename) {
const NativeModule = require('module')
var modules = { exports: {}}
const wrapper = NativeModule.wrap(string)
let strings = wrapper.substring(0,400)
console.log(strings, strings.length)
const script = new vm.Script(wrapper, {
filename: filename,
displayErrors: true
})
const result = script.runInThisContext()
result(modules.exports, require, modules, __filename, __dirname)
return module.exports
}
// 仿照nodejs源码方式利用vm编译字符串js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment