Estoy tratando de usar emailjs para enviar un correo electrónico al usuario después de enviar el formulario, pero recibo este error:
FAILED... ReferenceError: XMLHttpRequest is not defined at C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\emailjs-com\cjs\api\sendPost.js:8:21 at new Promise (<anonymous>) at Object.sendPost (C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\emailjs-com\cjs\api\sendPost.js:7:12) at Object.send (C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\emailjs-com\cjs\methods\send\send.js:25:23) at C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\routes\index.js:197:11 at Layer.handle [as handle_request] (C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\express\lib\router\layer.js:95:\lib\router\layer.js:95:5) at C:\Users\Awesome\Desktop\Awesome\Websites\Client Websites\alumates-landing-page\node_modules\express\lib\router\index.js:281:22Según el error, XMLHttpRequest no está definido en el sendpost.js de emailjs
No modifiqué este archivo. Acabo de instalar emailjs de la forma habitual usando
npm install emailjs-com --savePor favor, ¿alguien sabe cómo solucionarlo? Esta es mi ruta:
router.post('/groups/join', function (req, res) { //handle form submission here var templateParams = { url: url, group_name: group_name, //gotten from form submission value user_name: joinRequest.user_name, //gotten from form submission value email: joinRequest.email //gotten from form submission value } emailjs.send(serviceID, groupID, templateParams) .then(function (response) { console.log('SUCCESS!', response.status, response.text); res.redirect("/login") }, function (error) { console.log('FAILED...', error); }); })También he requerido emailjs y xhr en la parte superior de mi ruta:
var xhr = require("xhr"); var emailjs = require("emailjs-com"); emailjs.init("user_CPxhncQgw2s5e4nNwbu36")Debe mover el método emailjs.send al front-end. Incluso instalé xhr2 y reemplacé el código en el módulo. Recibí un registro que dice que emailjs no funciona en aplicaciones que no son de navegador.
Para usar XHR en el nodo js, necesita usar una biblioteca externa como xhr2 Primero, instálela
npm install xhr2Ahora, exígelo
var XMLHttpRequest = require('xhr2'); var xhr = new XMLHttpRequest();Nada de esto tiene sentido. Email.js apunta a los navegadores y sus API. Importar xhr en la parte superior no hace ninguna diferencia; no hace que las API de XHR estén disponibles en el ámbito global de Node.
Si REALMENTE quisiera usarlo, necesitaría agregar la implementación de XHR usando el paquete xhr para crear el esqueleto, pero en realidad es el camino equivocado. Para empezar, simplemente encuentre una librería de correo electrónico que se dirija a un nodo.