Проблема с Require JS в серверной среде SuiteScript 2.0 - PullRequest
0 голосов
/ 15 марта 2020

Мы пытаемся заставить core-js@3 работать должным образом в среде исполнения SuiteScript 2.0 на стороне сервера для всех его (очень приятно иметь) многократных заполнений ECMAScript 6.

В комплекте версия библиотеки, кажется, работает нормально. Например, это нормально работает в отладчике сценариев:

/**
 * @NApiVersion 2.x
 */
require(['/SuiteScripts/core'],
  function() {
    var test = Array.from(new Set([1, 2, 3, 2, 1]));
  }
);

(где /SuiteScripts/core.js - это объединенная версия версии 3.6.4 библиотеки .)

Однако мы бы предпочли использовать стандартную (не связанную) версию библиотеки, потому что это позволит нам выборочно загружать только те функции, которые нам нужны. Мы загрузили версию 3.6.4 библиотеки в нашу File Cab inet и затем попытались загрузить ее:

File Cabinet

/**
 * @NApiVersion 2.x
 */
require(['/SuiteScripts/core-js'],
  function() {
    var test = Array.from(new Set([1, 2, 3, 2, 1]));
  }
);

Это приводит к следующая ошибка:

{"type":"error.SuiteScriptModuleLoaderError","name":"MODULE_DOES_NOT_EXIST","message":"Module does not exist: /SuiteScripts/core-js.js","stack":["<anonymous>(adhoc$-1$debugger.user:4)"]}

Похоже, что Require JS делает что-то странное в среде SuiteScript 2.0, поскольку обычно обращение к каталогу из require() приводит к тому, что Require JS ищет index.js в каталоге? Если мы обращаемся непосредственно к файлу index.js в каталоге, то мы просто получаем другую ошибку, когда файл index.js пытается require('./es') подкаталог es:

/**
 * @NApiVersion 2.x
 */
require(['/SuiteScripts/core-js/index'],
  function() {
    var test = Array.from(new Set([1, 2, 3, 2, 1]));
  }
);

Сообщение об ошибке:

{"type":"error.SuiteScriptModuleLoaderError","name":"{stack=[Ljava.lang.Object;@73882a5d, toJSON=org.mozilla.javascript.InterpretedFunction@53fe9f7f, name=MODULE_DOES_NOT_EXIST, toString=org.mozilla.javascript.InterpretedFunction@32f5a028, id=, message=Module does not exist: /es.js, TYPE=error.SuiteScriptModuleLoaderError}","message":"","stack":["<anonymous>(adhoc$-1$debugger.user:4)"]}

Мы испробовали различные механизмы изменения конфигурации Require JS, которые мы нашли предложенными в документации NetSuite и в Интернете, такие как аргумент @NAmdConfig /Directory/... JSDo c и require.config(...), без успеха. @NAmdConfig кажется полностью игнорируемым в каждом контексте выполнения, в котором мы его пробовали, и require.config(...) нельзя использовать для изменения основной конфигурации контекста Require JS.

Is index.js разрешение просто нарушено в реализации SuiteScript 2.0 Require JS? Есть ли обходные пути?

1 Ответ

1 голос
/ 16 марта 2020

NetSuite использует настроенную версию require, без документации о том, что именно является этими настройками. Для достижения наилучших результатов вам нужно использовать свернутые свернутые версии любых библиотек.

Если вы хотите выбирать функции core-js, вам следует использовать webpack или rollup или любой другой инструмент компиляции, который вы хотите собрать библиотеку так, как вам нужно, а затем импортировать один полученный файл в свои модули SuiteScript.

В качестве альтернативы, если ваша цель - функции ES6 +, вы можете попробовать использовать SuiteScript 2.1.

...