导出/导入Nightmare.js函数

时间:2019-03-22 14:31:09

标签: node.js nightmare

所以,我有一个工作中的nightmare.js应用程序,该应用程序可以100%运行。我现在处于重构阶段,想将我制作的自定义函数(使用nightmare.js函数)放入另一个文件,然后将其导出/导入到我的主文件中。

这些函数被调用,但是噩梦函数实际上并没有执行或引发错误。

为什么噩梦功能在导入时不起作用?

我的主应用程序:

const Nightmare = require('nightmare')
const nightmare = Nightmare({
    show: true,
    typeInterval: 1000,
    waitTimeout: 60 * 1000
})

const bot = require('./utils')

nightmare
    .goto(url)
    .then(_ => bot.selectByVal('#myDiv', 'myVal'))
    .then( 'yada yada yada ...')...

module.exports = nightmare;

实用程序:

const Nightmare = require('nightmare');
const nightmare = Nightmare();

module.exports = {
    selectByVal: function(el, val) {
        console.log('select' + el + val)
        try {
            return nightmare.select(el, val)
        } catch (e) {
            return e
        }
    }
}

我认为这与我的噩梦实例没有导出/导入有关,但不确定如何做到这一点。

1 个答案:

答案 0 :(得分:0)

botutils无权访问在主应用程序上创建的nightmare。您需要通过参考。

返回一个返回对象的函数。

module.exports = function(nightmare) { // <-- now the same nightmare is in both file 
  return {
    selectByVal: function(el, val) {
      console.log('select' + el + val)
      try {
        return nightmare.select(el, val)
      } catch (e) {
        return e
      }
    }
  }
}

然后在您的主应用上

const bot = require('./utils')(nightmare) // <-- pass the reference

nightmare
  .goto(url)
  .then(_ => bot.selectByVal('#myDiv', 'myVal'))