Я хотел бы загрузить не-AMD модули (jQuery и blockUI), используя @NAmdConfig для клиентского скрипта, но в моем коде возникает ошибка в браузере.
Uncaught Ошибка: модуль не существует:../../lib/jquery-blockUI.js
Если я использую абсолютный путь вместо относительного пути, он работает.
"baseUrl": "../../lib/"
Заменить выше на ниже, тогда работает.
"baseUrl": "/SuiteScripts/ComponentA/SuiteScript2/lib/"
Однако я хотел бы использовать относительный путь, потому что эти сценарии будут выпущены в виде пакета.
Мое текущее решение для этой проблемы - использование абсолютного пути и его замена.с путём пакета, когда я выпускаю пакет.
Кто-нибудь знает, как использовать относительный путь или лучшее решение?
Файлы сценариев
Структура файла
SuiteScripts/
└── ComponentA/
└── SuiteScript2/
├── FunctionA/
│ ├ config.json
│ ├ Suitelet.js
│ └ ClientScript.js
└── lib/
├ jquery.min.js
└ jquery-blockUI.js
config.json
{
"baseUrl": "../../lib/",
"paths": {
"jquery": "jquery.min.js",
"blockUI": "jquery-blockUI.js"
},
"shim": {
"blockUI": ["jquery"]
}
}
Suitelet.js
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
* @NAmdConfig ./config.json
*/
define(['N/record', 'N/url', 'N/ui/serverWidget'],
function(record, nsUrl, serverWidget) {
function onRequest(context) {
// code abbreviated
var form = serverWidget.createForm({title: 'FunctionA', hideNavBar: false});
// Set client script
form.clientScriptModulePath = './ClientScript.js';
// code abbreviated
}
})
ClientScript.js
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
* @NAmdConfig ./config.json
*/
define(['N/runtime', 'N/url', 'blockUI'],
function (runtime, url, blockUI) {
// code using blockUI
});