在邮递员中,我试图实现以下目标:
不过,我见过的遍布网络的许多实现似乎都不起作用。我可以一直进行到步骤2.2,然后事情死于可怕的燃烧死亡。 Postman下的JavaScript引擎拒绝评估存储在globals集合中的对象。
为找出问题,我将其简化为一个最小的脚本,该脚本放置在我的收藏集的请求前脚本中:
postman.setGlobalVariable("loadUtils", function utils() {
let utils = {};
utils.main = function() {
console.log("Hello, world!");
}
return utils;
} + ';utils()');
然后我尝试如下加载该脚本:
var code = globals.loadUtils;
console.log(code);
var utils = eval('(' + code + ')');
但是总是会发生以下错误:
评估测试脚本时出错:SyntaxError: 意外令牌;
我尝试过:
我确定这是简单,愚蠢且显而易见的事情,而且我只是没有看到它。
有人可以指出我在这里做错了吗?
P.S。正如建议的here on StackOverflow和Postman forums on GitHub那样,这应该是可能的(尽管它需要滚动一些注释才能看到解决方案)。
答案 0 :(得分:2)
您将两个语句存储为字符串,并用分号分隔:
"function utils() { /*...*/ }; utils()"
然后将字符串包装在括号中并尝试执行:
eval("(function { /*...*/ }; utils())")
无效,因为表达式内的;
是语法错误。
您要么删除括号,用冒号代替分号,要么使用IIFE(我在这里赞成):
eval("(" + someFunc + ")()");