NetSuite销售订单ClientScript报log.debug is not a function错误
NetSuite客户端脚本报错修复方案
核心报错原因
你遇到的JS_ Exception - TypeError log.debug is not a function以及代码隐藏的逻辑问题一共有3处:
N/log是NetSuite服务端脚本专用模块,2.1版本客户端脚本运行在浏览器环境,不支持导入使用该模块,导入后拿到的log对象不存在debug方法,调用就会抛出类型错误。- 代码中直接使用了
rec变量操作记录,但没有从脚本上下文scriptContext中获取当前编辑的记录实例,执行到赋值逻辑时会直接抛rec is not defined的引用错误。 - 业务字段ID写错:销售订单item子列表中价格等级的字段ID不是
price_value,正确ID为pricelevel,且绝大多数NetSuite环境中「Custom(自定义价格)」对应的内部ID是数字-1,不是字符串custom。
修复后可直接使用的代码
/** * @NApiVersion 2.1 * @NScriptType ClientScript * @NModuleScope SameAccount */ define([], () => { function fieldChanged(scriptContext) { const currentRec = scriptContext.currentRecord; const sublistId = scriptContext.sublistId; const changedField = scriptContext.fieldId; // 仅当用户在item子列表选中物料行项目时触发逻辑 if (sublistId === 'item' && changedField === 'item') { try { currentRec.setCurrentSublistValue({ sublistId: 'item', fieldId: 'pricelevel', value: -1, // 若你环境自定义价格等级内部ID不同,替换为实际值即可 ignoreFieldChange: true }); } catch(e) { // 客户端脚本调试用console.log,打开浏览器F12控制台即可查看日志 console.log('设置自定义价格等级失败:', e); } } } return { fieldChanged: fieldChanged }; });
关键调整说明
- 移除了客户端不兼容的
N/log导入,以及未使用的N/search导入,日志打印改用浏览器原生console.log,彻底解决log方法不存在的报错。 - 从
scriptContext中获取当前记录实例currentRec,替换原代码中未定义的rec变量,解决引用错误。 - 修正价格等级字段ID与对应取值,确保赋值逻辑能正确命中目标字段。
- 增加触发条件判断,仅当用户选中行项目物料时才执行赋值,避免修改行上其他字段时重复触发逻辑。
- 保留
ignoreFieldChange: true配置,避免赋值操作递归触发fieldChanged事件造成死循环。
内容的提问来源于stack exchange,提问作者TheIronKing
相关产品推荐
相关产品推荐

