Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

332
Vistas
Llame a la función JS en html en el lado del servidor (nodejs)

tengo un index.html

 <!DOCTYPE html> <html> <head> <title>Server-side Example</title> <script src="./CircleArea.js"></script> </head> <body> <input id="ftpd" type="button" value="Calculate" onclick="CircleArea()" /> </body> </html>

Llama al archivo CircleArea.js.

 const PI = 3.14 let radius = 3; function circleArea(){ var inputField = document.createElement("INPUT"); inputField.setAttribute("type", "text"); inputField.setAttribute("value", (PI*radius*radius)); document.body.appendChild(inputField); } module.exports ={circleArea}; // This I added for nodejs

Funciona bien. Pero ahora quiero ejecutar Index.html en el lado del servidor.

Agregué server.js

 let http = require('http'); let fs = require('fs'); let handleRequest = (request, response) => { response.writeHead(200, { 'Content-Type': 'text/html' }); fs.readFile('./Index.html', null, function (error, data) { if (error) { response.writeHead(404); respone.write('Whoops! File not found!'); } else { response.write(data); } response.end(); }); }; http.createServer(handleRequest).listen(8000); console.log('Server running at http://localhost:8000');

Ahora node server.js

da error

 CircleArea.js:1 Uncaught SyntaxError: Unexpected token '<' (Index):13 Uncaught ReferenceError: CircleArea is not defined at HTMLInputElement.onclick ((Index):13:6)

Mi pregunta es ¿cómo debo modificar Index.html y CircleArea.js para ejecutarlo en nodejs?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su código no tiene nada que ver con la evaluación del lado del servidor. Está utilizando Node.js como servidor web. El servidor no evalúa el código del cliente. No importa CircleArea.js . no necesitas

 module.exports ={circleArea}; // This I added for nodejs

y debe quitarlo. Es una exportación de módulo CommonJS y no está permitida en el código del navegador.

Un navegador web envía una solicitud de index.html . El servidor responde con el contenido de Index.html . El navegador lo evalúa. Encuentra una etiqueta de secuencia de comandos para ./CircleArea.js y envía una solicitud para este archivo. El servidor responde con el contenido de Index.html porque no hay enrutamiento en el servidor. Abra las herramientas de desarrollo en su navegador para ver el problema. El servidor responde con los mismos datos (el contenido de Index.html ) para todas las solicitudes. Tienes que implementar el enrutamiento.

 let http = require('http'); let fs = require('fs'); let handleRequest = (request, response) => { let file = 'Index.html'; if (request.url === '/CircleArea.js') { file = 'CircleArea.js'; response.writeHead(200, { 'Content-Type': 'application/javascript', }); } else { response.writeHead(200, { 'Content-Type': 'text/html', }); } fs.readFile('./' + file, null, function (error, data) { if (error) { response.writeHead(404); response.write('Whoops! File not found!'); } else { response.write(data); } response.end(); }); }; http.createServer(handleRequest).listen(8000); console.log('Server running at http://localhost:8000');

Esta es una solución muy básica y simple. Puede usarlo para un enrutamiento muy simple. Para un enrutamiento más complejo, recomiendo un marco como Nest.js

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda