为“基本” requirejs配置创建名称空间别名

时间:2019-07-08 19:39:56

标签: requirejs karma-runner netsuite

因此,我正在为我的Netsuite脚本创建一个测试套件(Netsuite是一个业务管理平台),并且我使用推荐的框架Karmajs + Requirejs +茉莉来实现此目标。运行测试时,出现以下错误:

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 :(得分:0)

感谢大家花了一些时间来查看我的问题。

在深入调试之后,我找到了解决方案。如前所述,我错过了一些事情:

  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"
        }
    }
});