He creado una aplicación Express JS simple. y está funcionando bien en localhost. cuando visito localhost:8000 veo archivos estáticos (index.html, style.css y frontend.js).
He intentado implementar esa aplicación en un servidor usando cPanel. y he instalado la aplicación Node y las dependencias usando package.json con éxito. Pero cuando visito el dominio, solo veo un mensaje (la aplicación Node JS está funcionando, la versión de Node es 10.24.1).
¿Cómo hacer que mi aplicación señale y muestre la carpeta estática (index.html) y ejecute la aplicación?
La arquitectura de mi aplicación:
Y aquí está mi archivo de inicio server.js:
// Setup empty JS object to act as endpoint for all routes projectData = {}; // Require Express to run server and routes const express = require('express'); // Start up an instance of app const app = express(); /* Dependencies */ const bodyParser = require('body-parser'); /* Middleware*/ //Here we are configuring express to use body-parser as middle-ware. app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // Cors for cross origin allowance const cors = require('cors'); app.use(cors()); // Initialize the main project folder app.use(express.static('public')); // Setup Server const port = 8000; const server = app.listen(port, function(){ console.log(`server running on localhost: ${port}`); }); //POST Route to store data in the app endpoint, projectData object app.post('/addData', addData); function addData (req, res){ let data = req.body; projectData = data; console.log(projectData); } app.get('/getData', getData); function getData(req, res) { res.send(projectData); }El problema aquí es que no está señalando una ruta para enviar el archivo HTML . De lo contrario, el cliente tendría que apuntarlo a la ruta correcta del archivo, como localhost:3000/index.html . necesita enviarlo desde el servidor usando app.get
app.get("/", (req, res) => { res.sendFile(__dirname + "path to the file"); });El problema es que he creado la aplicación en una subcarpeta de mi dominio. Pero cuando creé un subdominio y reinstalé la aplicación dentro de él, la aplicación apunta a la carpeta estática con éxito.