NetSuite SuiteScript 2.0:如何解决N/redirect模块加载超时错误?
NetSuite SuiteScript 2.0: N/redirect 模块加载超时错误
问题背景
打开NetSuite现有发票页面时触发错误:
Error: Load timeout for modules: N/redirect
实现逻辑:
- 通过用户事件脚本在发票查看模式添加自定义按钮,点击后调用客户端脚本
rs_cm_invoice_telema.js的onButtonClick函数 - 客户端脚本尝试通过
N/redirect模块跳转至Suitelet(注:代码中redirect.toSuitelet目标为Suitelet,而非用户事件脚本) - 已尝试清除浏览器缓存、切换Edge/Chrome浏览器,问题未解决
代码片段
用户事件脚本
/** * @NApiVersion 2.0 * @NScriptType UserEventScript */ define(['N/ui/serverWidget'], /** * @param {serverWidget} serverWidget */ function(serverWidget) { function beforeLoad(context) { var invoiceForm = context.form; invoiceForm.clientScriptModulePath = './rs_cm_invoice_telema.js'; invoiceForm.addButton({ id : 'custpage_export_invoice_to_telema_button', label : 'Export to Telema', functionName : 'onButtonClick' }); } return {beforeLoad : beforeLoad} });
客户端脚本(报错来源)
/** * @NApiVersion 2.0 */ define(['N/log', 'N/redirect'], /** * @param {log} log * @param {redirect} redirect */ function(log, redirect) { function callUserEventScript() { redirect.toSuitelet({ scriptId : '216', deploymentId : '307', }); } return {onButtonClick: callUserEventScript} });
解决方案
1. 补全客户端脚本的@NScriptType声明
客户端脚本缺少@NScriptType ClientScript标记,NetSuite无法识别脚本类型,可能导致模块加载异常。修正后的代码:
/** * @NApiVersion 2.0 * @NScriptType ClientScript // 新增该行声明 */ define(['N/log', 'N/redirect'], /** * @param {log} log * @param {redirect} redirect */ function(log, redirect) { function callUserEventScript() { redirect.toSuitelet({ scriptId : '216', deploymentId : '307', }); } return {onButtonClick: callUserEventScript} });
2. 动态加载N/redirect模块
避免初始化时加载模块,改为按钮点击时动态加载,降低初始加载压力:
/** * @NApiVersion 2.0 * @NScriptType ClientScript */ define(['N/log'], /** * @param {log} log */ function(log) { function callUserEventScript() { // 动态加载N/redirect模块 require(['N/redirect'], function(redirect) { redirect.toSuitelet({ scriptId : '216', deploymentId : '307', }); }); } return {onButtonClick: callUserEventScript} });
3. 验证脚本路径与权限
- 确认用户事件脚本中
clientScriptModulePath的正确性:若脚本不在同一目录,使用完整路径(如/SuiteScripts/your-folder/rs_cm_invoice_telema.js)或直接引用脚本ID(customscript_rs_cm_invoice_telema) - 检查客户端脚本部署状态:确保已部署且对当前用户/角色开放权限
- 验证目标Suitelet权限:当前用户需具备脚本ID216、部署ID307的访问权限
4. 排查NetSuite环境问题
若以上操作无效,可能是平台临时故障:
- 切换NetSuite数据中心(如有多区域选项)
- 清除NetSuite缓存:右上角用户名 → Setup → Company → System Notes → 点击Clear Cache
- 联系NetSuite Support提交错误日志,排查平台级模块加载问题
内容的提问来源于stack exchange,提问作者miumiups
相关产品推荐
相关产品推荐

