En angular 1 pude tener un solo proyecto tanto para el front-end como para el back-end porque podía usar la función express para servir el código del front-end
app.use('/frontEnd', express.static('frontend'));Este enfoque tiene un error porque actualmente con la semilla de inicio rápido de angular 4, el index.html no está en la carpeta de front-end raíz sino el src dentro de la carpeta de front-end raíz. Entonces, para dar cuenta de eso, probé:
app.use('/frontEnd', express.static('frontend/src')); Eso "funciona", pero cuando localhost:8080/frontEnd se rompe.
PREGUNTA : ¿Cuál es el trabajo en torno a esto?
PREGUNTA ALTERNATIVA : Si esto ya no está disponible, 1. ¿hay alguna manera de tener un solo proyecto para ambos extremos o 2. ¿Es el procedimiento adecuado mantener a ambos lados separados en sus propios proyectos?
Debido a la API de historial, Express necesita capturar todas las solicitudes realizadas y servir el index.html y luego dejar que Angular maneje las rutas.
Entonces, el fragmento que debe usar en su aplicación Express es:
// Include the path module include path from 'path' // Specify your static path app.use('/assets', express.static(path.join(__dirname, 'frontend/src/assets'))); // Then catch all requests made to http://localhost:8080/frontEnd app.get('/frontEnd/*', (req, res, next) => { res.sendFile(path.join(__dirname, 'frontend/src/index.html')); }); Ahora, cuando vaya a cargar imágenes estáticas, scripts, etc., la ruta /assets cargará estática desde frontend/src/assets . Si no especifica una ruta de activos, cada solicitud de activos devolverá index.html.
Además, cuando vaya a producir, piense en la representación del lado del servidor . :)