javascript AMDモジュールにいくつかのコードがあります。クライアントスクリプトを参照して展開するClientScriptを作成すると、そのコードはClientScriptイベントから呼び出されたときに正常に動作します。しかし、カスタムボタンクリックイベントから全く同じ機能を呼び出すと、require.jsの予期しないエラーが発生します(コンソール出力のポストの終わりを参照してください)。カスタムボタンから呼び出されるクライアントスクリプトにモジュールをロードする
はここClientScriptコードです:
/**
* @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
爆弾の最初の呼び出し。 (ログメッセージはまた、NSの実行ログに表示)それはfieldChangedイベントから呼び出されますときに、このコードからコンソール出力だと動作します。ここ
/**
* @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
};
});
:ここ
は、ワイヤ上ボタンのコードです[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)
クライアントスクリプトでは、 'N/log'依存関係が必要ですが、定義関数の名前は' https'です。 'log'は定義されていません。 –