Создание псевдонима пространства имен для "base" requirejs config - PullRequest
1 голос
/ 08 июля 2019

Поэтому я создаю набор тестов для своих сценариев Netsuite (Netsuite - это платформа управления бизнесом) и использую рекомендованные платформы Karmajs + Requirejs + jasmine для достижения этой цели. Когда я запускаю тесты, я получаю следующую ошибку:

08 07 2019 15:18:40.992:WARN [web-server]: 404: /SuiteScripts/CompanyNetsuite/Util/MathUtil.js
08 07 2019 15:18:40.993:DEBUG [phantomjs.launcher]: Error: Script error for "/SuiteScripts/CompanyNetsuite/Util/MathUtil", needed by: /base/Util/Calculator

Это связано с тем, что «SuiteScripts / CompanyNetsuite» является пространством имен модуля, определенным в Netsuite для базового каталога сценариев. Я последовал совету некоторой записи StackOverflow и документации конфигурации карты Requirejs, но, похоже, она не работает.

Ниже приведен пример структуры каталогов. Таким образом, в Netsuite Company-Suitescript будет модулем /SuiteScripts/CompanyNetsuite:

Company-Suitescript
  |_ Util
   |_ MathUtil.js
  |_ Calculator
   |_ PointsCalculator.js
 .
 .
 . 

В Invoice / script1.js, например, он имеет:

/**
 * @NApiVersion 2.x
 * @NModuleScope Public
 */
define([
        '/SuiteScripts/CompanyNetsuite/Util/MathUtil'
    ], function(MathUtil){...}

Итак, чтобы справиться с этим в тестировании, я написал следующее в файле test-main.js:

require.config({
    baseurl:"../../",
    paths: {
        N: 'base/tests/unit/mocks/N'
    },
    map: {
        "SuiteScripts/CompanyNetsuite/Util" : {
            "MathUtil" : "Util/MathUtil.js"
        }
    }
});

Я также пробовал:

require.config({
    baseurl:"../../",
    paths: {
        N: 'base/tests/unit/mocks/N'
    },
    map: {
        "SuiteScripts/CompanyNetsuite/Util" : {
            "MathUtil" : "base/Util/MathUtil.js"
        }
    }
});

Информация о Package.json:

{
...
"devDependencies": {
    "karma": "~4.1.0",
    "karma-chrome-launcher": "^2.2.0",
    "karma-coverage": "~1.1.2",
    "karma-jasmine": "~2.0.1",
    "karma-phantomjs-launcher": "^1.0.4",
    "jasmine-spec-reporter": "~4.2.1",
    "requirejs": "^2.3.6"
  }
}

Я ожидаю SuiteScripts/CompanyNetsuite/Util/MathUtil.js для указанного base/Util/MathUtil.js сценария. Я почти уверен, что что-то упустил. Помощь будет оценена.

Заранее спасибо.

1 Ответ

0 голосов
/ 09 июля 2019

Спасибо всем, кто нашел минутку своего времени, чтобы посмотреть мою проблему.

После глубокой отладки я нашел решение.Как было сказано ранее, я что-то упустил:

  1. / до SuiteScripts.Кажется, я предположил, что либо это было добавлено по умолчанию или было эквивалентно /SuiteScripts/CompanyNetsuite/Util/MathUtil SuiteScripts/CompanyNetsuite/Util/MathUtil.
  2. Мне нужно было удалить base из base/Util/MathUtil.Полученная компиляция была ../../base/Util/MathUtil, что неверно.base - это каталог, определенный KarmaJS во время компиляции.

Итак, полученная конфигурация:

require.config({
    baseUrl: '/base',
    paths: {
        N: 'tests/unit/mocks/N'
    },
    map: {
        "*" : {
            "/SuiteScripts/CompanyNetsuite/Util" : "Util"
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...