本文整理汇总了TypeScript中vm.Script.runInContext方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Script.runInContext方法的具体用法?TypeScript Script.runInContext怎么用?TypeScript Script.runInContext使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类vm.Script
的用法示例。
在下文中一共展示了Script.runInContext方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: TemplateToData
public static TemplateToData(template: any) {
// 数据模板 template 中可能含有攻击代码,例如死循环,所以在沙箱中生成最终数据
// https://nodejs.org/dist/latest-v7.x/docs/api/vm.html
const sandbox = { Mock, template, data: {} }
const script = new vm.Script('data = Mock.mock(template)')
const context = new vm.createContext(sandbox) // eslint-disable-line new-cap
try {
script.runInContext(context, { timeout: 1000 }) // 每次 Mock.mock() 最多执行 1s
// DONE 2.1 __root__
let data: any = sandbox.data
let keys = Object.keys(data)
if (keys.length === 1 && keys[0] === '__root__') data = data.__root__
return data
} catch (err) {
console.error(err)
return {}
}
}
示例2:
/// vm tests : https://nodejs.org/api/vm.html
////////////////////////////////////////////////////
namespace vm_tests {
{
const sandbox = {
animal: 'cat',
count: 2
};
const context = vm.createContext(sandbox);
console.log(vm.isContext(context));
const script = new vm.Script('count += 1; name = "kitty"');
for (let i = 0; i < 10; ++i) {
script.runInContext(context);
}
console.log(util.inspect(sandbox));
vm.runInNewContext('count += 1; name = "kitty"', sandbox);
console.log(util.inspect(sandbox));
}
{
const sandboxes = [{}, {}, {}];
const script = new vm.Script('globalVar = "set"');
sandboxes.forEach((sandbox) => {
script.runInNewContext(sandbox);
示例3: runScript
// TS infers the return type to be `any`, since that's what `runInContext`
// returns.
runScript(script: Script) {
if (this.context) {
return script.runInContext(this.context);
}
return null;
}