如何在UIAutomation中使用节点模块

时间:2013-02-26 22:40:37

标签: javascript ios node.js npm ios-ui-automation

根据apple的documentation,我可以使用import语句将一个JS文件导入到另一个JS文件中。是的,我能够使用JS函数并递归调用其他JS函数。

但是我可以将节点模块包含到我的自动化中。 Node / npm模块似乎有很多工具可以让生活更轻松,避免代码重复。

实际上,通过我的代码中的以下调用,我能够使用一个名为moment.js的节点模块

#import "../node_modules/moment/moment.js"

但我与其他npm模块没有相同的运气。我试了几次Faker.jsCharlatan.js,我在Faker.js中收到以下错误

  

脚本抛出一个未被捕获的JavaScript错误:找不到变量:window   在Faker.js的第618行

查看* .js文件,看起来它与这些模块的打包方式有关。我的JS知识并没有把我带到任何地方。

js文件的最后几行

// CommonJS module is defined
if (hasModule) {
    module.exports = moment;
}
/*global ender:false */
if (typeof ender === 'undefined') {
    // here, `this` means `window` in the browser, or `global` on the server
    // add `moment` as a global object via a string identifier,
    // for Closure Compiler "advanced" mode
    this['moment'] = moment;
}
/*global define:false */
if (typeof define === "function" && define.amd) {
    define("moment", [], function () {
        return moment;
    });
}

Faker js文件的最后几行

if (typeof define == 'function'){
   define(function(){
        return Faker;
   });
}
else if(typeof module !== 'undefined' && module.exports) {
    module.exports = Faker;
}
else {
    window.Faker = Faker;
}

我完全能够在节点控制台中使用这些模块,所以模块没有任何问题,它只是如何在我的JS文件中包含/要求它们。

1 个答案:

答案 0 :(得分:2)

要为Faker为我工作做两件事

  1. 删除'use strict'
  2. 检查窗口是否未定义
  3. 添加此声明

    这['Faker'] = Faker;