我在 javascript AMD 模块中有一些代码。如果我创建一个引用它并部署它的 ClientScript,则从 ClientScript 事件调用代码时运行良好。但是,如果我从自定义按钮单击事件中调用完全相同的函数,它会在 require.js 中出现意外错误(请参阅帖子末尾的控制台输出)。
这是客户端脚本代码:
/**
* @NApiVersion 2.0
* @NScriptType ClientScript
* @NModuleScope public
*/
'use strict'
require.config({
paths: {
'iceUtil': 'SuiteScripts/ieCommon/iceUtil'
}
});
define(['N/log', 'iceUtil'], function (https, iceUtil) {
function calculateConfigurations() {
console.log('calculateConfigurations: before native log call');
log.debug({
title: 'calculateConfigurations',
details: 'nothing'
})
console.log('calculateConfigurations: before iceUtil log call');
iceUtil.logDebug('calculateConfigurations - iceUtil log',
'nothing');
}
function fieldChanged() {
iceUtil.logDebug('pageInit', 'begining client event');
calculateConfigurations();
iceUtil.logDebug('pageInit', 'ending client event');
}
return {
calculateConfigurations: calculateConfigurations
, fieldChanged: fieldChanged
}
});
iceUtil.js 实际上只是包装了本机 NetSuite 日志功能。
这可以正常工作,并且在从 fieldChanged 事件触发中调用时会显示所有日志。
但是,如果我使用以下代码将其连接到自定义按钮,则只会console.log('recordId: ' + recordId);
运行第一个调用。第一次呼叫iceUtil.logDebug
炸弹。
这是连接按钮的代码:
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
*/
define(["N/log", "../ieCommon/iceUtil"], function (log, iceUtil) {
function addCalcConfigsButton(context) {
if(context.type==context.UserEventType.EDIT) {
context.form.clientScriptFileId = 6222;
//context.form.clientScriptModulePath = 'SuiteScripts/ieOppMetrics/clientCalculateConfigurations.js'; // This also works
context.form.addButton(
{
id : 'custpage_buttonid',
label : 'Calculate Configurations',
functionName : 'calculateConfigurations'
}
);
iceUtil.logDebug("addCalcConfigButton - iceUtil log",
"Button added.");
log.debug({
title: 'addCalcConfigButton - native log',
details: 'Button added.'
});
}
}
return {
beforeLoad : addCalcConfigsButton
};
});
这是从 fieldChanged 事件调用此代码并正常工作时的控制台输出(日志消息也显示在 NS 执行日志中):
[Log] calculateConfigurations: before native log call
[Log] calculateConfigurations: before iceUtil log call
这是按下按钮并失败的控制台输出(NS 执行日志中没有日志消息):
[Log] calculateConfigurations: before native log call
[Error] UNEXPECTED_ERROR: Unexpected Error
onError (bootstrap.js:150)
onError (NsRequire.js:645)
check (NsRequire.js:994)
enable (NsRequire.js:1251)
init (NsRequire.js:882)
(anonymous function) (NsRequire.js:1547)