Javascript SuiteScript 2.0中的自定义模块

Javascript SuiteScript 2.0中的自定义模块,javascript,netsuite,suitescript2.0,Javascript,Netsuite,Suitescript2.0,我有一个JavaScript库文件,在为NetSuite创建SuiteScripts时,我在脚本中使用它。我正试图让自己在2.0上做好充分准备,并开始推动新项目,远离SuiteScript1.0。所以,我把我的库文件转录成2.0。但是,每当我创建一个新脚本并引用我的库时,总会收到以下消息: SuiteScript 2.0 entry point scripts must implement one script type function. 但是,如果我从脚本中删除引用,它将允许我加载它并创建

我有一个JavaScript库文件,在为NetSuite创建SuiteScripts时,我在脚本中使用它。我正试图让自己在2.0上做好充分准备,并开始推动新项目,远离SuiteScript1.0。所以,我把我的库文件转录成2.0。但是,每当我创建一个新脚本并引用我的库时,总会收到以下消息:

SuiteScript 2.0 entry point scripts must implement one script type function.
但是,如果我从脚本中删除引用,它将允许我加载它并创建脚本记录。然后,我可以把引用放回去,并上传修改后的脚本文件,没有问题。我一辈子都不明白为什么会这样。如果重要的话,这里是文件中的JSDoc头:

/** 
 * my.library.v2.js
 * @NApiVersion 2.x
 * @NModuleScope Public 
 */
脚本在其自己的JSDoc头之后也会这样开始:

define(['N/error', 'N/record', 'N/runtime', 'N/search', './my.library.v2'],
function(error, record, runtime, search, myLib) {
    function doStuff(context) { /* do a bunch of stuff */ }
    return { pageInit : doStuff };
});
同样的问题,我在运行一些脚本时也遇到了问题。一旦我超越了前面提到的问题,将此模块应用于客户机脚本时,一切都会完美工作。但是,我无法成功获取服务器端脚本以使用库启动。我经常会犯这样的错误:

com.netsuite.suitescript.exception.NLServerSideScriptException: TypeError: Cannot call method "split" of undefined
让我恼火的是,库中没有对String.split()的调用。我无法记录错误可能来自何处,因为将模块加载到服务器脚本时会发生错误。我知道这就是正在发生的事情,因为无论操作类型如何,这种情况都会发生,我创建的脚本在进入细节之前总是有一个条件来检查特定的操作类型。例如,如果我让它检查“打印”操作,但该记录被打开为“编辑”。我甚至将整个函数包装在一个try/catch块中


我在追踪这些问题的原因方面运气不太好,所以我希望这两个问题都来自同一个原因。

如果您能够发布/提供自定义模块,这将有助于缩小问题的范围,但据我所知,您包含了一些服务器端脚本中不可用的模块,如
N/currentRecord
。此模块仅在客户端脚本上可用,不允许您加载/创建您提到的服务器端脚本。因此,如果您删除这些模块并尝试更新/创建服务器端脚本,它应该可以工作


类似地,有些模块只能在服务器端脚本上使用,如
N/task
module,如果您尝试在客户端脚本上加载/要求它们,则会返回错误。

好,因此代表我出现了错误。我的一个函数定义缺少“函数”。由于函数是作为对象的属性添加的,我可以理解为什么它总是被忽略,如果你不够小心,你的眼睛只是在回避问题。阵列原型也有问题,但我认为SuiteScript2.0不需要原型。它是为与SuiteScript 1.0一起使用而开发的,因为许多方便的对象函数直到比NetSuite中服务器端引擎使用的JS版本更高的版本才得以实现。

由于各种原因,我无法共享库文件,包括将3000多行代码粘贴到一篇文章中可能会很麻烦这一事实。但我已经考虑了特定于客户端或服务器端功能的模块,并使其相当不可知,因为大多数库不需要SuiteScript。这些是唯一添加的模块:['N/error','N/log','N/record','N/search','N/runtime']当模块中的某个地方出现错误时,我看到了这一点。试着把它放到同一个文件中的一个函数中,看看是否仍然会出现错误。此外,我认为jsdoc中的模块范围应该与之类似Organisation@MichaelMcCauley您是否在脚本中的任何位置使用
findSublistLineWithValue
?如果是,请确保您搜索的值不是未定义或null,因为我认为我遇到了类似的情况,这是因为搜索的值不存在,即它是空字符串。这将修复未定义的
错误消息的
无法调用方法“split”。@Avi-Nope,没有一次调用任何包含文本“sublist”的内容。@Sundance.101这可能需要很长时间才能以这种方式进行排序。此模块中写入了许多函数,我经常重复使用它们。我实际上正在考虑这样做,但并不期待。