J'ai du code dans un module AMD javascript. Si je crée un code client qui le référence et le déploie, le code s'exécute correctement lorsqu'il est appelé à partir de l'événement ClientScript. Mais si j'appelle exactement la même fonction à partir d'un événement de clic de bouton personnalisé, il bombarde avec une erreur inattendue à l'intérieur de require.js (voir la fin de la publication pour les sorties de la console).Chargement de modules dans le script Client à partir d'un bouton personnalisé
Voici le code 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 vraiment enveloppements juste la fonctionnalité de journal natif NetSuite.
Cela fonctionne correctement et tous les journaux s'affichent lorsqu'ils sont appelés à partir de l'événement fieldChanged.
Mais si je le connecte à un bouton personnalisé, en utilisant le code suivant, seul le premier appel console.log('recordId: ' + recordId);
s'exécute. Le premier appel à iceUtil.logDebug
bombes.
Voici le code qui les fils jusqu'à la touche:
/**
* @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
};
});
est ici la sortie de la console à partir de ce code quand il est appelé de l'événement fieldChanged et fonctionne (les messages du journal montrent également dans l'exécution NS Log):
[Log] calculateConfigurations: before native log call
[Log] calculateConfigurations: before iceUtil log call
est ici la sortie de la console de appuyant sur la touche et ne fonctionne pas (il n'y a pas de messages du journal dans le journal d'exécution 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)
Dans votre script client, vous devez utiliser la dépendance 'N/log' mais son nom dans la fonction de définition est' https'. 'log' n'est pas défini. –