Peng-YM / QuanX

Scripts for QX, Loon, Surge, and ShadowRocket!
GNU General Public License v3.0
1.61k stars 176 forks source link

解决Node读取Js文件未设置编码造成的vm.run()运行报错问题和vm.runInContext()方法不存在造成的运行报错问题 #79

Open Gowther opened 2 years ago

Gowther commented 2 years ago
  1. 本地Node版本为v12.18.3,根据Node官方文档说明, fs.readFileSync(path, endcoding)方法,不传encoding时方法返回的是二进制buffer,126行 vm.run(code) vm运行时会报错。 If the encoding option is specified then this function returns a string. Otherwise it returns a buffer.
  2. 根据vm2官方文档说明,没有找到 vm.runInContext()方法, 160 行运行报错。 What is the difference between Node's vm and vm2?
    const vm = require('vm');
    vm.runInNewContext('this.constructor.constructor("return process")().exit()');
    const {VM} = require('vm2');
    new VM().run('this.constructor.constructor("return process")().exit()');