CursosEmpresasBlogLiveConfPrecios

Aplicar hashes al nombre de nuestros builds

Clase 16 de 22 • Curso de Server Side Render con Express

Contenido del curso

Conocimientos necesarios para aplicar SSR

  • 1
    Lo que aprenderás sobre server side render

    Lo que aprenderás sobre server side render

    01:13 min
  • 2
    Presentación del proyecto del curso y sus herramientas

    Presentación del proyecto del curso y sus herramientas

    01:52 min
  • 3
    ¿Qué es Server Side Rendering?

    ¿Qué es Server Side Rendering?

    04:36 min

Preparando entorno para aplicar SSR

  • 4
    Actualizando dependencias en NPM

    Actualizando dependencias en NPM

    05:18 min
  • 5
    Creación del servidor en Express

    Creación del servidor en Express

    07:35 min
  • 6
    Usando Nodemon y Dotenv

    Usando Nodemon y Dotenv

    05:31 min
  • 7
    Integración de Webpack con Express

    Integración de Webpack con Express

    13:10 min

Integración de Express con React

  • 8
    Servir React con Express

    Servir React con Express

    05:25 min
  • 9
    Abstrayendo React Router, creando history y haciendo initialState más accesible

    Abstrayendo React Router, creando history y haciendo initialState más accesible

    12:01 min

Aplicar Server Side Rendering

  • 10
    Definición de la función principal para realizar el renderizado desde el servidor

    Definición de la función principal para realizar el renderizado desde el servidor

    11:59 min
  • 11
    Assets require hook

    Assets require hook

    04:15 min
  • 12
    Hydrate y estado de Redux desde Express

    Hydrate y estado de Redux desde Express

    09:18 min

Trabaja con entornos de desarrollo y producción

  • 13
    Configurando nuestro servidor para producción

    Configurando nuestro servidor para producción

    07:02 min
  • 14
    Configurando webpack para producción

    Configurando webpack para producción

    11:28 min
  • 15
    Optimización del Build

    Optimización del Build

    09:07 min
  • 16
    Aplicar hashes al nombre de nuestros builds

    Aplicar hashes al nombre de nuestros builds

    Viendo ahora

Buenas prácticas de Server Side Render

  • 17
    Vendorfiles en Webpack: definiendo cacheGroups

    Vendorfiles en Webpack: definiendo cacheGroups

    03:54 min
  • 18
    Vendorfiles en Webpack: generando el vendorfile

    Vendorfiles en Webpack: generando el vendorfile

    07:19 min
  • 19
    Configuración de ESLint

    Configuración de ESLint

    10:45 min

Alternativas al SSR con Express

  • 20
    Cómo implementar Next.js

    Cómo implementar Next.js

    05:58 min
  • 21
    Cómo usar Gatsby.js

    Cómo usar Gatsby.js

    04:02 min
  • 22
    Cuando usar cada una de las herramientas presentadas

    Cuando usar cada una de las herramientas presentadas

    02:55 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Jhon Esteban Herrera

        Jhon Esteban Herrera

        student•
        hace 5 años
        const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); plugins: [ isDev ? () => {} : new WebpackManifestPlugin(), ],
          Cristofher Jumbo Jimenez

          Cristofher Jumbo Jimenez

          student•
          hace 5 años

          Muy bueno bro, el que pone el profesor ya no sirve para construir

          john fredy quimbaya orozco

          john fredy quimbaya orozco

          student•
          hace 5 años

          Muchas gracias, me sirvió mucho

        Maria Elizabeth Minero Alvarenga

        Maria Elizabeth Minero Alvarenga

        student•
        hace 5 años

        El principal beneficio de aplicar hashes es que el nombre cambia cada vez que desplegamos con cambios hechos, entonces nuestros usuarios siempre van a tener la ultima versión que lancemos por qué el navegador va a considerarlos archivos distintos y no van a tener caché.

        Cesar Andres Ardila Buitrago

        Cesar Andres Ardila Buitrago

        student•
        hace 5 años

        Para los que tengan problemas con la versión 3.0.0 el plugin no tiene default export entonces debemos importarlo asi:

        const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
          Heber Emmanuel Estrada Lujan

          Heber Emmanuel Estrada Lujan

          student•
          hace 5 años

          es correcto, con importarlo ya no sale el error de que ManifestPlugin no es un constructor. gracias

        Gerson Montenegro

        Gerson Montenegro

        student•
        hace 5 años

        Al intentar hacer el build se me formó un lío. Estoy usando últimas versiones de todo, excepto de webpack-manifest-plugin, pues sigue siendo la misma del curso. Se presenta el siguiente error:

        TypeError: Cannot read property 'length' of undefined at /Users/XXXXXXX/PlatziVideo-feature-router-redux/node_modules/webpack-manifest-plugin/lib/plugin.js:128:39

        En ese punto ocurre la siguiente validación:

        var isEntryAsset = asset.chunks.length > 0;

        Resulta que el objeto asset ya no tiene (sabrá Mandrake por qué) la propiedad chunks. Ahora es así:

        { type: 'asset', name: 'assets/app-7dd9eca0e982cb818b05.js', size: 200404, chunkNames: [ 'main' ], chunkIdHints: [], auxiliaryChunkNames: [], auxiliaryChunkIdHints: [], emitted: false, comparedForEmit: false, cached: true, info: { immutable: true, fullhash: '7dd9eca0e982cb818b05', javascriptModule: false, minimized: true, related: { license: 'assets/app-7dd9eca0e982cb818b05.js.LICENSE.txt', gziped: 'assets/app-7dd9eca0e982cb818b05.js.gz' } }, filteredRelated: 2 }

        Así que pensé que ahora sería el array llamado chunkNames, razón por la cual reemplacé dicha propiedad:

        var isEntryAsset = asset.chunkNames.length > 0;

        Y listo, el build empezó a funcionar perfectamente. Ahora ya tengo mi manifest.json:

        { "main.css": "/assets/app-7dd9eca0e982cb818b05.css", "main.js": "/assets/app-7dd9eca0e982cb818b05.js", "assets/logo-platzi-video-BW2.png": "/assets/7104263cc7ae188d7e1275934c32a378.png", "assets/play-icon.png": "/assets/9a1e4bf4f3cb0556c15a96c17808dbf7.png", "assets/remove-icon.png": "/assets/1baf6f54be269d1d45a5ebb09a788ded.png", "assets/plus-icon.png": "/assets/82e73f0c9de0d9e64a4f7eb6917fe799.png", "assets/user-icon.png": "/assets/5a89d07e023cabc9bd46b8ef3e33b9c3.png", "assets/google-icon.png": "/assets/87fee39f3ffc377fa871d31587cc532c.png", "assets/twitter-icon.png": "/assets/0103ef81347edc3344acec319325eb81.png" }

        Claro, esto en una versión final de un proyecto exigirá una de dos:

        1. Crear un script postinstall para parchear el archivo usando alguna herramienta de consola.
        2. Usar patch-package para crear el respectivo parche a la dependencia. ...pero eso ya es arena de otro costal.
          Gerson Montenegro

          Gerson Montenegro

          student•
          hace 5 años

          Por cierto, aquí hablamos de seguir usando la última versión estable del paquete webpack-manifest-plugin

          Omar Moreno

          Omar Moreno

          student•
          hace 5 años

          Muchas gracias por tu aportación! :D me pasaba lo mismo

        Julia Suárez

        Julia Suárez

        student•
        hace 5 años

        Sinceramente el uso de un monton de condicionales en un solo archivo de configuracion de webpack me parece una mala practica pues a medida que agregas cosas se empieza a volver un spaguetti, estaba buscando si existe alguna alternativa (ademas de usar archivos completamente separados para produccion y para desarrollo) y me encontre con esta guia en donde explican que puedes tener 3 archivos, uno de common (comun para desarrollo y produccion) uno para la configuracion especifica de solo produccion y otro de desarrollo con cosas especificas de desarrollo https://webpack.js.org/guides/production/

          Jesus Adrian Berrio Valdes

          Jesus Adrian Berrio Valdes

          student•
          hace 5 años

          Yo la primera vez tomé este curso no entendí nada, ahora quiero lanzar mi pagina y no se como, tengo que regresar a ver los videos pero ahora si entiendo

        Diego Camino Reinoso

        Diego Camino Reinoso

        student•
        hace 6 años

        ¿Por qué es una buena práctica agregar hashes a los nombres de nuestros archivos?

          Tlacaelel León Villaseñor

          Tlacaelel León Villaseñor

          student•
          hace 6 años

          para el cache del navegador, imaginate que haces build de tu app y existe una version 1 por asi decirlo de tu app.js y app.css, despues decides hacer una modificacion en estilos o en alguna funcion, cuando vuelvas a hacer build vas a volver a generar un app.js y un app.css. El problema viene cuando el navegador los carga, por que el navegador suele verificar si los archivos que pide ya los tiene, entonces puede pasar que el navegador al ver que ya tiene los archivos no los actualiza y no se ven reflejados los cambios. usar Hash en produccion te permite obligar al navegador a que baje los archivos cada vez que cambian, por que cada vez que haces build el hash cambia y el navegador identifica que es un archivo diferente.

          Diego Camino Reinoso

          Diego Camino Reinoso

          student•
          hace 6 años

          Muchas gracias por la respuesta! ahora todo me queda mucho más claro!

        Julia Suárez

        Julia Suárez

        student•
        hace 5 años

        De nuevo agrega paquetes magicamente sin explicar su beneficio o el problema que resuelve, aqui esta la documentacion de que es el manifest de webpack https://webpack.js.org/concepts/manifest/

        José Daniel Navarrete Díaz

        José Daniel Navarrete Díaz

        student•
        hace 5 años

        ERROR: Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-aJk8FS/5kyfiEeueBXFdhKH3WWsxSNW4Z25doaSoJJQ='), or a nonce ('nonce-...') is required to enable inline execution.

          Antonio Mendiola Farías

          Antonio Mendiola Farías

          student•
          hace 5 años

          Hola josdanind.

          No especificas en qué momento te sale ese error, ni compartes tu código. Pero es el mismo que tuve clases atrás.

          En el archivo server.js modifica la función renderApp de tal forma que dónde especificas las políticas del 'Content-Security-Policy' permitas las fuentes desde dónde se obtienen las imágenes, los videos, las fuentes y los scripts. Algo asi:

          carbon (1).png
          Sólo sustituye el hash por el que te aparece en el error en Chrome ‘sha256-aJk8FS/5kyfiEeueBXFdhKH3WWsxSNW4Z25doaSoJJQ=’

          Saludos!

          José Daniel Navarrete Díaz

          José Daniel Navarrete Díaz

          student•
          hace 5 años

          Muchas gracias, estaba cerca a esa solución pero le estaba mandando 'Content-Security-Policy' desde el HTML.

        Nicolas Esteban Manograsso

        Nicolas Esteban Manograsso

        student•
        hace 5 años

        Instale el paquete webpack-manifest-plugin con la version 3.0.0 y tengo el siguiente error

        TypeError: ManifestPlugin is not a constructor

        Para solucionarlo cambié un poco el webpack.config.js como dice la doc del paquete

        const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); /.../ plugins: [ isDev ? () => {} : new WebpackManifestPlugin(), ],

        Espero que sirva :D

        Jose Daniel Molina

        Jose Daniel Molina

        student•
        hace 5 años

        Porqué es importante el archivo manifest.json?

          Daniel Felipe Merchan Fuquen

          Daniel Felipe Merchan Fuquen

          student•
          hace 5 años

          Tampoco lo entendía, pero consulté en este enlace y aprendí que nos funciona para inyectar manualmente nuestros archivos generados por Webpack. Porque en otros casos habitualmente usamos html-webpack-plugin el cual hace este proceso por nosotros y como eliminamos este plugin en clases pasadas debemos encontrar otra forma de hacer está tarea.

        Jair Balcazar Cobeña

        Jair Balcazar Cobeña

        student•
        hace 6 años

        Cual es el beneficio de utilizar hashes en los nombres de los archivos, considero que se debió mencionar en la clase.

          Carlos Sampol

          Carlos Sampol

          Team Platzi•
          hace 6 años

          El principal beneficio de aplicar hashes es que el nombre cambia cada vez que desplegamos con cambios hechos, entonces nuestros usuarios siempre van a tener la ultima versión que lancemos por qué el navegador va a considerarlos archivos distintos y no van a tener caché.

        Luis Carlos Kristen Ospitia

        Luis Carlos Kristen Ospitia

        student•
        hace 6 años

        yp tengo un problema que debe ser una chorrada pero no encuentro donde solucionarlo, y es que el build se me genera, los tamaños son los adecuados a la clase, todo perfecto pero cuando inicio el node src/server solo me muestra el index.html no me carga la aplicación, ya revise las rutas de webpack y todo, me crea hashes me hace todo pero al lanzarla en producción no me va, ya configure el .env con la configuración de producción, a alguien mas le ha pasado? o alguien que me pueda aconsejar?

          Luis Carlos Kristen Ospitia

          Luis Carlos Kristen Ospitia

          student•
          hace 6 años

          adjunto codigo de webpack.config.js

          const path = require('path'); const webpack = require('webpack'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CompressionWebpackPlugin = require('compression-webpack-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const ManifestPlugin = require('webpack-manifest-plugin'); require('dotenv').config(); const isDev = (process.env.ENV === 'development'); const entry = ['./src/frontend/index.js']; if (isDev) { entry.push('webpack-hot-middleware/client?path=/__webpack_hmr&timeout=2000&reload=true'); } module.exports = { entry, mode: process.env.ENV, output: { path: path.resolve(__dirname, 'src/server/public'), filename: isDev ? 'assets/app.js' : 'assets/app-[hash].js', publicPath: '/', }, resolve: { extensions: ['.js', '.jsx'], }, optimization: { minimize: true, minimizer: [new TerserPlugin()], }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: { loader: "babel-loader", } }, { test: /\.(s*)css$/, use: [ { loader: MiniCssExtractPlugin.loader, }, 'css-loader', 'sass-loader' ] }, { test: /\.(png|gif|jpg)$/, use: [ { 'loader': 'file-loader', options: { name: 'assets/[hash].[ext]' } } ] } ] }, devServer: { historyApiFallback: true, }, plugins: [ isDev ? new webpack.HotModuleReplacementPlugin() : () => { }, isDev ? () => { } : new CompressionWebpackPlugin({ test: /\.js$|\.css$/, filename: '[path].gz', }), isDev ? () => { } : new ManifestPlugin(), new MiniCssExtractPlugin({ filename: isDev ? 'assets/app.css' : 'assets/app-[hash].css', }), ], };
          María Paz Muñoz Parra

          María Paz Muñoz Parra

          student•
          hace 5 años

          Hola Luis, me pasa igual, ¿lograste solucionarlo? En consola me sale el error

          Refused to apply style from 'https://localhost:4000/assets/app-....css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
        Kevin Enrique Ponce Rodriguez

        Kevin Enrique Ponce Rodriguez

        student•
        hace 5 años

        Buenas Noches, es necesario que la librería de webpack-manifest-plugin tenga que estar en las dependencias de development?? Es que no me da error pero no me genera el manifest.json. La versión que tengo es la 3.0.0

          Cristofher Jumbo Jimenez

          Cristofher Jumbo Jimenez

          student•
          hace 5 años

          El manifest.json lo tiene que crear uno normalmente, pero ahora te comento cuando termine el video :)

        Adonys Santos Jiménez

        Adonys Santos Jiménez

        student•
        hace 4 años

        Llevo días intentando solucionar lo siguiente

        Este error está en la rama dev de mi repo https://github.com/adonyssantos/platzi-video-frontend/tree/dev

        1. Al cargar la App en modo producción ( npm run start) ocurre el siguiente error:

        !image

        1. También el botón de plus para agregar un video a myList no funciona:

        !image

        1. Además el formulario de Login no funciona:

        !image

        Creo que si se soluciona el error 1 es muy probable que se quite el error 2 y 3.

        Carlos Alfonso Garcia Rivera

        Carlos Alfonso Garcia Rivera

        student•
        hace 5 años

        ¿todas estas configuraciones son necesarias para optimizar el sitio o se pueden omitir?

        María Paz Muñoz Parra

        María Paz Muñoz Parra

        student•
        hace 5 años

        Noto que mi manifest.json no incluye los archivos CSS, ¿me estará faltando algo?

        { "main.js": "/assets/app-44021f2d14257fd21f3a.js", "vendors.js": "/assets/vendor-44021f2d14257fd21f3a.js", "assets/app-44021f2d14257fd21f3a.js.gz": "/assets/app-44021f2d14257fd21f3a.js.gz", "assets/vendor-44021f2d14257fd21f3a.js.LICENSE.txt": "/assets/vendor-44021f2d14257fd21f3a.js.LICENSE.txt", "assets/vendor-44021f2d14257fd21f3a.js.gz": "/assets/vendor-44021f2d14257fd21f3a.js.gz" }
        José Marquínez

        José Marquínez

        student•
        hace 5 años

        ¿Por qué la lectura de nuestro manifest.json se hace de forma síncrona? a través de: fs.readFileSync()

        Ever Alfredo Sorto Ayala

        Ever Alfredo Sorto Ayala

        student•
        hace 5 años

        por que ocupo la función síncrona para leer el archivo readFileSync?

          Jesus Adrian Berrio Valdes

          Jesus Adrian Berrio Valdes

          student•
          hace 5 años

          Porque leer un archivo es algo asincriono, es como si usara el await

        Cristofher Jumbo Jimenez

        Cristofher Jumbo Jimenez

        student•
        hace 5 años

        En typescript al momento de usar JSON.parse teneis que pasar el buffer a String. Ya que los tipos no son compatibles :/

        Didier Zúñiga

        Didier Zúñiga

        student•
        hace 6 años

        A mi me pasa lo mismo que a @inquietus en su comentario sobre el prefijo 1 en los assets, pero me pasa solo cuando aplico la configuración de splitChunks para generar el vendor, y solo me sucede con el CSS, he revisado y todo esta igual al que se hace en la clase.