Javascript 外部JS文件中的Postman调用函数-';x未定义';
其他帖子也讨论过这个问题,但我自己仍然无法应用 我有一个邮递员预脚本测试 我正在尝试调用中定义的加密函数 代码调用代码的方式如下:Javascript 外部JS文件中的Postman调用函数-';x未定义';,javascript,postman,postman-pre-request-script,minifiedjs,Javascript,Postman,Postman Pre Request Script,Minifiedjs,其他帖子也讨论过这个问题,但我自己仍然无法应用 我有一个邮递员预脚本测试 我正在尝试调用中定义的加密函数 代码调用代码的方式如下: let pubKey = forge.pki.publicKeyFromPem(atob(publicKey)); ... let .... = forge.util.encodeUtf8(data)); let ... = forge.util.encode64(text); ... 我尝试了eval技巧,将整个代码放入一个变量中 var code = pm.
let pubKey = forge.pki.publicKeyFromPem(atob(publicKey));
...
let .... = forge.util.encodeUtf8(data));
let ... = forge.util.encode64(text);
...
我尝试了eval
技巧,将整个代码放入一个变量中
var code = pm.collectionVariables.get('forge.min.js');
eval(code);
由此产生的错误是:
ReferenceError:未定义forge
代码变量包含整个缩小的Javascript块。您可以执行以下操作,而不是使用
eval
:
(new Function(code))();
console.log(forge);
邮递员控制台中的输出(您可以在右下角打开它):
解释:我不知道为什么,但我就是无法让eval
工作。我怀疑这与VM Postman使用的全局范围有关(浏览器中没有window
like,Node.js中没有global
like,而是一个pm
全局对象)
函数构造函数的作用类似于eval
函数,但将其封装在自己的内部作用域中,因此无法访问外部变量。你可以读更多
语法有点混乱,但换言之,它创建了一个新函数,然后调用它。
新函数(…)
周围必须有一对额外的括号,因为“函数调用”操作符(末尾的()
绑定比“新”操作符更强。如何检索文件forge.min.js
?可能它在开头或结尾包含了一些不应该出现的字符,因此无效。我会试试这个。顺便说一句,关于window
,我试着写了一个技巧window={}代码>,但这也没有帮助。
{
aes:{...}
asn1:{...}
cipher:{...}
...
}