Чтобы устранить эту проблему, вы можете console.log (sayHello) и посмотреть, что на самом деле там. Если сама sayhello - правильная функция, тогда продолжайте,
Кажется, main.js
- это скрипт, который должен запускаться в браузере. Если это так, вы должны запустить его в браузере, а не в контексте nodeJS.
Вместо sayHello();
, вы можете попробовать,
await page.evaluate(sayHello)
Таким образом, он будет выполняться в контексте браузера.
РЕДАКТИРОВАТЬ: jest-puppeteer - это всего лишь продолжение шутки, помогающей вам тестировать различные маленькие кусочки. Вы можете написать тесты отдельно. Но если вы хотите запустить и протестировать функции DOM, вам нужно использовать что-то, что может запустить эту функцию DOM. Это факт.
Я не уверен, почему вы пытаетесь запустить код jQuery (который зависит от браузеров window
и document
) в среде nodeJS.
Смотрите здесь , вам нужно как-то эмулировать DOM. Так что Puppeteer
, jsdom
и другие помогут вам в этом. Ссылочный ответ:
Если вы действительно хотите держать все отдельно и не хотите использовать puppeteer
(что я действительно не понимаю, зачем вам это нужно), то вы можете попробовать несколько комбинаций следования, чтобы увидеть, что лучше всего подходит для вы, но помните, что вы пытаетесь заново изобрести то, что уже есть,