我使用nodejs和webdriver进行自动化测试。我试图将一个函数从一个js文件导出到另一个。例如,在文件abc.js下有一个名为abc的函数,我想将该函数与其他名为xyz.js的文件一起使用。我尝试使用export和require但它导出并运行整个测试(abc.js)而不仅仅是一个函数。
//abc.js
console.log('print this');
client= function client() {
driver.get(baseUrl + '/#/login');
};
exports.client = client;
//xyz.js
var client1 = require('abc.js').client();
答案 0 :(得分:1)
首次要求使用模块会导致模块被缓存并执行其代码,这就是为什么您会看到"打印此模块的原因。"登录。下次您致电client
功能时,您不应该看到它。
这与问题无关,但仍然在xyz.js文件中,因为您的函数没有返回任何可以使用的内容:
require('abc.js').client();
而不是:
var client1 = require('abc.js').client();
在你的abc.js中,不需要命名函数,你可以使用:
var client = function() {
...
};
答案 1 :(得分:1)
试一试
function abc(){
console.log('print this');
this.client= function client() {
driver.get(baseUrl + '/#/login');
};
return this;
}
module.exports = abc;
//xyz.js
var abc = require('abc.js')();
abc.client();
在nodejs中封装对象时的一个好习惯