Przekazanie argumentu do ewaluowanej funkcji

Przekazanie argumentu do ewaluowanej funkcji
adams0
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 dni
  • Postów:318
0

Cześć,

dotychczas myślałem że wiem jak działa scope w JS. Podczas pracy nad projektem okazało się że nie do końca. Ten programik zwraca tłumaczenia dla trzech słów:

https://github.com/adams00/Link_backend/blob/master/diki_sucker.js

Niestety gdy zamiast XXX wstawię zmienną word to zwraca mi błąd. Z tego co się orientuje to zmienna word powinna być dostępna.

Czy wiecie dla czego tak jest?

edytowany 2x, ostatnio: Riddle
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Koszalin
  • Postów:10094
0
adams0 napisał(a):

Ten programik zwraca tłumaczenia dla trzech słów:

https://github.com/adams00/Link_backend/blob/master/diki_sucker.js

Niestety gdy zamiast XXX wstawię zmienną word to zwraca mi błąd.

Jaki błąd?

Bo to nie wygląda jakby to był problem ze scope.

edytowany 1x, ostatnio: Riddle
adams0
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 dni
  • Postów:318
0
Kopiuj
Error: Evaluation failed: ReferenceError: word is not defined
    at pptr://__puppeteer_evaluation_script__:3:21
    at Array.map (<anonymous>)
    ...
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Koszalin
  • Postów:10094
0
adams0 napisał(a):
Kopiuj
Error: Evaluation failed: ReferenceError: word is not defined
    at pptr://__puppeteer_evaluation_script__:3:21
    at Array.map (<anonymous>)
    ...

Pokaż kod cały jaki masz w momencie w którym ten błąd leci.

Rozumiem że bazuje na tym linku który podesłałeś; ale pokaż swój kod jaki uruchamiasz tak czy tak.

Xarviel
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 11 godzin
  • Postów:847
2

Musisz przekazać zmienną word w podobny sposób jak przekazałeś resultsSelector.

Kopiuj
const translations = await page.evaluate(({ resultsSelector, word }) => {
  // ...
}, { resultsSelector, word });
adams0 napisał(a):
Kopiuj
Error: Evaluation failed: ReferenceError: word is not defined
    at pptr://__puppeteer_evaluation_script__:3:21
    at Array.map (<anonymous>)
    ...

Błąd jest pewnie związany z tym, że ta funkcja nie zostanie wywołana jako zwykły skrypt node.js tylko puppeteer wstrzykuje ją do obecnie scrapowanej strony, czyli do tego await page.goto("https://www.diki.pl/slownik-angielskiego?q=${word}").

edytowany 4x, ostatnio: Xarviel

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.