【发布时间】:2020-02-28 01:39:59
【问题描述】:
我有一个 JavaScript 库文件,在为 NetSuite 创建 SuiteScripts 时,我会在整个脚本中使用它。我正在努力让自己为 2.0 做好准备,并开始向它推送新项目并远离 SuiteScript 1.0。所以,我将我的库文件转录为 2.0.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 块中。
我在追查这些问题的原因方面运气不佳,所以我希望这两个问题都源于同一个原因。
【问题讨论】:
标签: javascript netsuite suitescript2.0