如何配置Intern 4以使用RequireJS?

时间:2019-02-28 12:12:44

标签: requirejs intern

我在node_modules目录中安装了RequireJS,并且intern.json文件具有:

"node": {
    "loader": "requirejs"
},

但是,当我运行“ npx intern”时,它失败并显示:

  

错误:加载程序脚本requirejs没有注册加载程序回调     在     

是否可以让Intern 4使用RequireJS?

1 个答案:

答案 0 :(得分:1)

要使用特定的加载程序,Intern需要一个“加载程序”脚本,该脚本实际上将初始化加载程序并使用该脚本处理加载模块。实习生包括用于多个装载程序的装载程序脚本,例如Dojo 1,Dojo和SystemJS。它不包含RequireJS的加载程序脚本,但是您可以相当轻松地添加一个。

RequireJS的简单脚本如下所示:

// your_project/reqjs.js
intern.registerLoader(function(options) {
  function initLoader(requirejs) {
    // Configure requireJS -- use options passed in through the intern.json
    // config, and add anything else
    requirejs.config(options);

    // This is the function Intern will actually call to load modules
    return function(modules) {
      return new Promise(function(resolve, reject) {
        requirejs(modules, function() {
          resolve();
        }, function(error) {
          reject(error);
        });
      });
    };
  };

  if (typeof window !== 'undefined') {
    return intern
      .loadScript('node_modules/requirejs/require.js')
      .then(function() {
        return initLoader(window.requirejs);
      });
  } else {
    return initLoader(require('requirejs'));
  }
});

请注意,Intern并不使用加载程序来实际检索供自己使用的模块(这就是为什么上述resolve调用不包括已加载模块的原因),它仅使用它们来加载测试套件。套件本身可以正常使用加载程序。

您将在配置中使用脚本

"node": {
  "loader": "./reqjs.js"
}