Javascript 量角器:无法在同一模块内调用导出的函数

Javascript 量角器:无法在同一模块内调用导出的函数,javascript,protractor,Javascript,Protractor,我用量角器写了一个导出模块。它内部定义了多个函数。 现在,我想在同一个模块中的另一个函数中调用一个导出函数。 我的模块如下所示 module.exports = { read_page_number_data: function { // code here }, read_page_data: function { this.read_page_number_data().then(function () { //

我用量角器写了一个导出模块。它内部定义了多个函数。 现在,我想在同一个模块中的另一个函数中调用一个导出函数。 我的模块如下所示

module.exports = {
    read_page_number_data: function {
        // code here
    },
    read_page_data: function {
        this.read_page_number_data().then(function () {
            // Code here.
        });
    },
    check_link_present: function {
        // code here
    },
    click_link: function {
        this.check_link_present().then(function () {
            // Code here.
        });
    },
}
现在,当我在测试脚本中调用read_page_data函数时,我得到以下错误

失败:此.read\u page\u number\u数据不是函数。

我已经尝试了下面问题中给出的所有选项。但仍然没有成功


注意:在调用read\u page\u data函数之前,我正在调用click\u link函数,它在内部调用check\u link\u present函数。但此调用工作正常,并且check\u link\u present函数正确地从click\u link函数获取调用。之后,控件将导航到链接中给出的页面。

为什么不按下面的方式尝试呢。这是页面对象模型测试框架的最佳实践之一

var PageName = function(){
              this.firstMethod = function(){
                //logic
              };
              this.secodnMethod = function(){
                //logic
              };
  }

module.exports = new PageName();

为什么不试试下面的方法呢。这是页面对象模型测试框架的最佳实践之一

var PageName = function(){
              this.firstMethod = function(){
                //logic
              };
              this.secodnMethod = function(){
                //logic
              };
  }

module.exports = new PageName();

一种解决方案是将对象分配给特定于模块的变量。 e、 g

然后您可以使用
myModule.read\u page\u number\u data()
等调用模块内的函数

你可以找到一个例子

注意
上下文

需要记住的一点是,
可以根据调用父函数的方式更改其上下文,这可能是它用于
单击链接
而不用于
读取页面数据
的原因


您可以找到有关
关键字的更多信息。

一种解决方案是将对象分配给特定于模块的变量。 e、 g

然后您可以使用
myModule.read\u page\u number\u data()
等调用模块内的函数

你可以找到一个例子

注意
上下文

需要记住的一点是,
可以根据调用父函数的方式更改其上下文,这可能是它用于
单击链接
而不用于
读取页面数据
的原因


您可以找到有关
this
关键字的更多信息。

您应该在导出模块中的所有方法“读取页数数据”前加前缀“this.”。应该是这样的:阅读页面、数字、数据,谢谢@SureshSalloju的回复。但是,当我在所有函数中添加前缀“this.”时,我得到以下错误[21:33:56]I/launcher-运行WebDriver[21:34:01]E/launcher的1个实例-error:C:\uiauto\lib\search\u lib.js:4 this.enter\u search\u key\u home\u page:function(key){^SyntaxError:意外的标记。你能试试下面我的答案吗?你应该在导出模块中的所有方法“读取页数数据”前面加上前缀“this”。它应该像“this.read页数数据”一样感谢@SureshSalloju的回复。但是,当我在所有函数中加上前缀“this”时,我得到下面的错误[21:33:56]I/launcher-运行WebDriver[21:34:01]E/launcher的1个实例-错误:C:\uiauto\lib\search\u lib.js:4此。输入搜索键\u主页:函数(键){^SyntaxError:意外的标记。即使我用这种方法尝试过,你能像我下面的答案一样尝试吗?仍然出现相同的问题。我得到了相同的旧错误。在哪个文件中你访问以及你如何访问?谢谢Suresh。下面的解决方案对我有效。实际上我已经定义了一个页面库模块。然后这些函数开始运行g从测试脚本调用。但是页面模块内的一个特定函数需要调用同一模块内的另一个函数…这就是它失败的地方。即使我用这种方法尝试过。仍然出现相同的问题。并且我得到了相同的旧错误。您访问哪个文件以及如何访问?谢谢Suresh。下面的解决方案对r me。实际上我已经定义了一个页面库模块。然后这些函数从测试脚本中被调用。但是页面模块中的一个特定函数需要调用同一模块中的另一个函数…这就是它失败的地方。谢谢Matthias。这个解决方案似乎对我有效。现在函数从中被调用其他功能。太棒了!如果有帮助,请考虑接受它。谢谢马蒂亚斯。这个解决方案似乎对我有用。现在函数从其他函数中调用。真棒!如果有帮助的话,请考虑接受它。