Estoy tratando de enviar un archivo con plantilla ejs como respuesta a una solicitud HTTP; los renders html y css pero el Javascript no responde. Las fuentes de Javascript están vinculadas en el encabezado de la respuesta de ejs, pero las funciones no se llaman cuando se muestra la página.
aplicación.js
const express = require('express') const app = express() let port = process.env.PORT || 3000 require('dotenv').config() const { auth,requiresAuth } = require('express-openid-connect') const path = require('path') let mysql = require('mysql') const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: true })) app.use(bodyParser.json()) app.set("views", path.join(__dirname, "views")) app.set("view engine", "ejs") app.use(express.static(__dirname)) app.set('port',port) app.get('/createnew', requiresAuth(), function (req, res) { let user = (JSON.stringify(req.oidc.user.email)) user = user.replace(/"/g, '\''); let user1 = { completeremail: user, } res.render('newform', {user : user1}) })La solicitud se realiza desde profilelist.ejs
function createNew() { let getUrl = window.location; let baseUrl = getUrl .protocol + "//" + getUrl.host; let query = baseUrl + '/createnew?' let req = new XMLHttpRequest() req.open("GET", query, true) req.addEventListener('load', function () { let response = req.responseText document.querySelector("html").innerHTML = response }) req.send() }Mi estructura de archivos es:
node_modules/ views/ complete.ejs form.ejs maintemplate.ejs newform.ejs profilelist.ejs .env .gitignore app.js javascript.js packahe.json package-lock.json README.md stylesheet.cssEl problema es que llamó a su función de middleware requiresAuth con argumentos vacíos, lo que significa que su middleware no llamará a next() para pasar el control a la siguiente función que representa su plantilla ejs, intente llamar a su middleware sin ()
app.get('/createnew', requiresAuth , function (req, res) { //your code here })