You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2代理执行JS脚本报错Cannot call method 'info' of undefined求解

问题原因

报错信息明确指向第3行代码调用info方法的对象为undefined,你的代码第3行就调用了log.info()输出日志,但log对象是在脚本中段才通过var log = mc.getServiceLog();声明赋值的,调用时log还没有被定义,自然会抛出找不到方法的错误。
另外注意WSO2 Synapse脚本中介器的JS运行环境没有内置全局log对象,所有日志输出必须先通过消息上下文mc.getServiceLog()获取日志实例后再调用对应级别方法。

解决方案

调整脚本内代码顺序,把log对象的声明放在所有日志输出语句之前即可,修改后的代理服务script段代码如下:

<script language="js"><![CDATA[var plInput = mc.getPayloadJSON();
// 先初始化log对象,再调用日志方法
var log = mc.getServiceLog();
log.info("Log messaggio ricevuto: "+ JSON.stringify(plInput)); 

var localRespinta = true;
var localConclusa = true;

if (plInput.stato == 1)
{
    localRespinta = false;
    localConclusa = false;

}
if (plInput.stato == 2)
{
    localRespinta = false;
    localConclusa = true;

}
if (plInput.stato == 3)
{
    localRespinta = false;
    localConclusa = true;

}

var keys = Object.keys(plInput);
var response = 
{
            "key":      plInput.key,
            "id":       plInput.id,
            "motivo":   plInput.motivo,
            "respinta": localRespinta,
            "conclusa": localConclusa
};

log.info("Logging inside Script Mediator"+JSON.stringify(response));
mc.setPayloadJSON(response);]]></script>

内容的提问来源于stack exchange,提问作者Pietro Ricciardi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:06:02