在 SuiteScript 2.0 中引用自定义 AMD 模块

xpe*_*dev 2 javascript amd netsuite suitescript

Netsuite 说在创建自定义模块时包含模块 ID,如下所示:

define(module_id, [dependencies], function)
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,找不到模块:

TypeError: Cannot read property "XPELPCenterModule" from undefined (/path/to/mysuitelet.js#35)
Run Code Online (Sandbox Code Playgroud)

当我删除I​​D时,它起作用了???

Hello Human Coder
Run Code Online (Sandbox Code Playgroud)

我错过了什么。我用同样的方式称呼他们两个

function (ui, email, runtime, search, record, log, render, cache, crypto, file, pcenter) {
        var p = new pcenter.XPELPCenterModule();
Run Code Online (Sandbox Code Playgroud)

.....

p.helloWorld('Human Coder');
Run Code Online (Sandbox Code Playgroud)

以下是模块代码示例:

工作代码:

define(["require", "exports"],
function (require, exports) {

    var XPELPCenterModule = /** @class */ (function () {

        function XPELPCenterModule(name) {
            this.name = name;
        }

        XPELPCenterModule.prototype.helloWorld = function (name) {
            return 'Hello ' + name;
        };

        return XPELPCenterModule;
    }());

    exports.XPELPCenterModule = XPELPCenterModule;
});
Run Code Online (Sandbox Code Playgroud)

非工作代码:

define('XPELPCenterModule', ["require", "exports"],
function (require, exports) {

    var XPELPCenterModule = /** @class */ (function () {

        function XPELPCenterModule(name) {
            this.name = name;
        }

        XPELPCenterModule.prototype.helloWorld = function (name) {
            return 'Hello ' + name;
        };

        return XPELPCenterModule;
    }());

    exports.XPELPCenterModule = XPELPCenterModule;
});
Run Code Online (Sandbox Code Playgroud)

xpe*_*dev 5

诀窍是使用 @NAmdConfig 并添加模块路径的 .json 配置文件:

/**
 *@NApiVersion 2.0
 *@NScriptType Suitelet
 *@NModuleScope Public
 *@NAmdConfig  /path/to/myModule.json
 */
Run Code Online (Sandbox Code Playgroud)

.JSON 配置文件:

{
  "paths": {
    "XPELPCenterModule": "/path/to/myModule"
  }
}
Run Code Online (Sandbox Code Playgroud)