Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
Ejecutar una función (no desde una etiqueta <script>) en el contexto del objeto de ventana de JSDOM

Hay varias descripciones de cómo ejecutar scripts incrustados en html con JSDOM, pero me gustaría ejecutar una función declarada en el contexto normal de node.js con un objeto global de jsdom, como:

 import { JSDOM } from 'jsdom'; function addHello() { document.body.innerHTML = '<p>hello</p>'; } const html = '<html><head></head><body></body></html>'; const jsdom = new JSDOM(html, { runScripts: 'outside-only' }); jsdom.window.addHello = addHello; jsdom.window.eval('addHello()');

De acuerdo con la documentación de JSDOM, pensé que la opción runScripts funcionaba, pero cuando ejecuto el código anterior con node , obtengo

 document.body.innerHTML = '<p>hello</p>'; ^ ReferenceError: document is not defined at addHello (file:///.../jsdomTryout.js:4:3)

Tenga en cuenta que addHello es solo un ejemplo. En el caso real, es un método de una biblioteca más grande y preferiría import en el script anterior en lugar de indicarle a JSDOM que cargue esa biblioteca a través de las etiquetas <script> .

¿Hay alguna manera de obtener lo que quiero con JSDOM? Mi sospecha es que esto no es posible, debido a la forma en que se determina el objeto global de una función , pero tal vez haya algo de "magia" disponible.

EDITAR: Mientras tanto, aprendí que lo que realmente me falta es el soporte <script type="module"> de jsdom para permitirme tener algo como

 <script type="module">import 'some-library';</script>

en el html paso a jsdom y voy desde allí.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda