基于服务器端SuiteScript 2.0中的上下文加载自定义模块

问题描述 投票:0回答:1

我正在尝试根据条件加载我的自定义模块。

CustomModule.js

define([], function(){
  export {
    run: function(){ log.debug('run in CustomModule' }
  };
}

这是我的用户事件脚本

userevent.js

define(['N/record'], function(record){
  ...
  var moduleName = record.getValue('custom_module_name'); // will return CustomModule.js
  require([moduleName], function(customModule){
    customModule.run();
  });
});

但是我收到以下错误

{
   type: "error.SuiteScriptModuleLoaderError",
   name: "INCORRECT_SUITESCRIPT_CONFIGURATION",
   message: "Incorrect SuiteScript configuration for module: CustomModule.js",
}

[当我使用define(['CustomModule.js'), function(customModule){...})之类的预加载时正在工作,但这可能不适合我们的情况。

有任何建议吗?

lazy-loading netsuite suitescript2.0
1个回答
0
投票

因此,调用自定义模块的方式将是(下面的示例代码段:)>

CustomModule.js [文件柜中的代码]

define([], function() {
    // You can have multiple functions
    function testFunction() {
        log.debug("Run in CustomModule");
        return 123;
    }
    return {  // Return all your functions here
        testFunction: testFunction
    };
});

您在其他脚本中调用自定义模块函数的方式将是:

示例用户事件脚本:

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */
define(['./CustomModule.js'], function(customModule) {
    .....
    function sampleFunction(customerId, recId, invNumberCounter) {
        var storeNumber = customModule.testFunction();  // value of 'storeNumber' will be 123
    }
    .....
});

其他重要说明:

编写库脚本(自定义模块)时,请将客户端支持的模块放在不同的脚本中,将服务器端的支持模块放在不同的脚本中。这是因为,如果将具有仅服务器端脚本支持的模块的库脚本(例如N /任务模块)合并到客户端脚本中,则会抛出错误,指出该模块不支持该模块。 scrpt。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.