Функции экспорта / импорта Nightmare.js - PullRequest
0 голосов
/ 22 марта 2019

Итак, у меня есть работающее приложение 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;

Utils:

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 голосов
/ 05 апреля 2019

bot или utils не имеет доступа к 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'))
...