Javascript 在node.js中导出函数
我正在使用nodejs和webdriver进行自动化测试。我正在尝试将函数从一个js文件导出到另一个js文件。e、 g文件abc.js下有一个名为abc的函数,我想将该函数用于另一个名为xyz.js的文件。我尝试使用export和require,但它导出并运行整个测试(abc.js),而不仅仅是一个函数Javascript 在node.js中导出函数,javascript,node.js,selenium,automation,Javascript,Node.js,Selenium,Automation,我正在使用nodejs和webdriver进行自动化测试。我正在尝试将函数从一个js文件导出到另一个js文件。e、 g文件abc.js下有一个名为abc的函数,我想将该函数用于另一个名为xyz.js的文件。我尝试使用export和require,但它导出并运行整个测试(abc.js),而不仅仅是一个函数 //abc.js console.log('print this'); client= function client() { driver.get(baseUrl + '/#/login'
//abc.js
console.log('print this');
client= function client() {
driver.get(baseUrl + '/#/login');
};
exports.client = client;
//xyz.js
var client1 = require('abc.js').client();
第一次需要一个模块会导致缓存该模块并执行其代码,这就是您看到“打印此”日志的原因。下次调用
客户端函数时,您不应该看到它
这与问题无关,但在您的xyz.js文件中,因为您的函数没有返回任何您可以使用的内容:
require('abc.js').client();
而不是:
var client1 = require('abc.js').client();
在您的abc.js中,不需要命名函数,您只需使用:
var client = function() {
...
};
试试看
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中封装对象是一个很好的实践…代码在哪里?请将其编辑到问题中。很难按照您的格式阅读。@AaronDufour好的,我格式化了代码,我尝试了多次,但仍然看到“打印此”日志,即使它超出了导出函数的范围。还有其他想法吗?…同样,当您第一次需要一个模块时,所有函数之外的代码都会被执行,在本例中是您的日志。这种行为是意料之中的。我想我是糊涂了。当你说第一次需要一个模块时,你的确切意思是什么?我是node.js的新手。