Node.js中已经读取到Buffer中的脚本如何高效率地执行?

问题描述

webpack打包出来的脚本,暂时以buffer的形式放在内存中,想直接执行这个脚本该怎么做?

问题出现的环境背景及自己尝试过哪些方法

尝试用child_process.execFile,发现第一个参数只能是路径,不适用。

尝试用new Function(buffer)/eval的方式执行过,成功了,希望有更好的方法解决这个问题。

阅读 1.7k
1 个回答

你想要的大概是VM (Executing JavaScript)
抄一段官方示例吧

const vm = require('vm');
const x = 1;

const sandbox = { x: 2 };
vm.createContext(sandbox); // Contextify the sandbox.

const code = 'x += 40; var y = 17;';
// x and y are global variables in the sandboxed environment.
// Initially, x has the value 2 because that is the value of sandbox.x.
vm.runInContext(code, sandbox);

console.log(sandbox.x); // 42
console.log(sandbox.y); // 17

console.log(x); // 1; y is not defined.

文档https://nodejs.org/dist/lates...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题