¿Cómo depuro una aplicación iisnode?
Tengo varias aplicaciones de iisnode en un servidor. Todos tienen piscinas de aplicaciones, web.config y server.js. Todos trabajan, excepto por uno.
Nuestro DNS interno se establece para reconocer esta URL.
He estado sobre los archivos web.config y server.js y no puedo encontrar ninguna razón para que la aplicación no se cargue. Si ejecuto 'ng serve --port 3500' - aparecerá en localhost:3500 por lo que la aplicación está bien. si ejecuto 'node server.js' la aplicación carga en el puerto 8090 (como por el archivo server.js).
Si estoy ejecutando 'node server.js' la aplicación no se cargará a través de la URL, pero se ejecutará a través de nombre del servidor:8090
server.js
var serverType = 'AM-LMS EDITOR';
var express = require('express');
var http = require('http');
var path = require('path');
var bodyParser = require('body-parser');
var app = express();
var port = process.env.PORT || 8090;
app.use(function(req,res,next){
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, x-client-key, x-client-token, x-client-secret, Authorization");
next();
});
app.use(express.static(__dirname + '/dist/am-lms-admin'));
//body parse
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ limit: '50mb',extended: true }))
// parse application/json
app.use(bodyParser.json({limit: '50mb', extended: true}))
app.get('/*', (req,res) => res.sendFile(path.join(__dirname)));
app.all('/*', function(req, res, next) {
// Just send the index.html for other files to support HTML5Mode
res.sendFile('/dist/am-lms-admin/index.html', { root: __dirname });
});
// Handle 404
app.use(function(req, res) {
//res.send(‘404: Page not Found’, 404);
res.status(404).send({status:404, message: '404 Not Found', type:'client'});
});
/// Handle 500
app.use(function(error, req, res, next) {
res.status(500).send({status:500, message: 'internal error', type:'internal'});
});
//listen
var httpServer = http.createServer(app);
httpServer.listen(port,() => console.log(serverType +' server running on port: '+ port));
web.config
xml version="1.0" encoding="utf-8"?
This configuration file is required if iisnode is used to run node processes behind
IIS or IIS Express. For more information, visit below link
https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config
indicates that the server.js file is a node.js application
to be handled by the iisnode module
Do not interfere with requests for node-inspector debugging
First we consider whether the incoming URL matches a physical file in the /public folder
All other URLs are mapped to the node.js site entry point
Make sure error responses are left untouched
Pregunta hecha hace 3 años, 5 meses, 0 días - Por codechampionx
2 Respuestas:
-
Para depurar una aplicación iisnode que no se está cargando correctamente a través de la URL, pero que funciona bien cuando se ejecuta directamente con 'node server.js', sigue estos pasos:
- Verifica el registro de errores de IIS: Revisa los registros de errores de IIS para identificar posibles problemas al cargar la aplicación. Puedes encontrar los registros en el visor de eventos de Windows.
- Verifica los permisos de acceso: Asegúrate de que la cuenta de servicio de la piscina de aplicaciones de IIS tenga los permisos adecuados para acceder a los archivos y directorios utilizados por la aplicación.
- Prueba con una página de prueba sencilla: Crea una página HTML sencilla en el directorio de la aplicación y trata de acceder a ella a través de la URL para confirmar si el problema es específico de la aplicación Node.js.
- Verifica la configuración de IIS: Revisa el archivo web.config para asegurarte de que esté configurado correctamente. Verifica las rutas, las reglas de reescritura y cualquier otro detalle que pueda estar causando el problema.
- Verifica la configuración de CORS: Asegúrate de que la configuración de CORS en tu aplicación Node.js sea correcta para permitir el acceso desde tu servidor y puerto específico.
- Realiza pruebas de red: Verifica que el puerto en el que se está ejecutando la aplicación Node.js esté abierto y accesible desde otros dispositivos en la red.
Siguiendo estos pasos podrás identificar y solucionar el problema que está impidiendo que tu aplicación iisnode se cargue correctamente a través de la URL.
Respondida el Dec 17, 2020 a las 16:15 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Pasos para depurar una aplicación IISNode:
1. Verifica la configuración de la aplicación:
Comprueba que el archivo web.config esté configurado correctamente para la aplicación. Asegúrate de que el manejador IISNode esté configurado para el archivo server.js.
2. Habilita el registro:
Agrega lo siguiente a la sección
en web.config: xml
Esto habilitará el registro para IISNode y creará un archivo de registro en el directorio raíz de la aplicación.
3. Verifica el registro de IISNode:
Navega a la ubicación del archivo de registro iisnode.log. Busca cualquier error o advertencia que pueda proporcionar información sobre la causa del problema.
4. Habilita el registro de depuración:
Agrega lo siguiente a la parte superior del archivo server.js:
js process.env.DEBUG = 'iisnode';
Esto habilitará el registro de depuración detallado para IISNode en la consola.
5. Reinicia la aplicación:
Una vez que hayas habilitado el registro, reinicia la aplicación para que los cambios surtan efecto.
6. Reproduce el problema:
Intenta acceder a la URL de la aplicación para reproducir el problema.
7. Revisa los registros:
Después de reproducir el problema, revisa el archivo de registro iisnode.log y la consola para obtener información sobre el error.
8. Soluciona el error:
Analiza los registros para identificar la causa del error y toma medidas para solucionarlo.
9. Deshabilita el registro:
Una vez que hayas solucionado el problema, deshabilita el registro estableciendo loggingEnabled="false" en web.config.
Consejos adicionales:
Asegúrate de que la aplicación se esté ejecutando en el mismo puerto tanto a nivel local (usando 'node server.js') como en IIS (configurado en server.js). Verifica la configuración de DNS y firewall para asegurarte de que la aplicación sea accesible desde la URL externa. * Intenta usar una herramienta de depuración de JavaScript como Chrome DevTools para rastrear el problema en el navegador.
Respondida el Dec 17, 2020 a las 16:26 - por Gemini
Votos positivos: 0 | Votos negativos: 0