Cómo actualizar a la versión 9
Para actualizar a la versión 9, ejecuta el siguiente comando:
Nota importante: Si estás usando TypeScript, asegúrate de actualizar también
@types/react
y@types/react-dom
a sus versiones correspondientes.
Verifica tu archivo de App personalizada (pages/_app.js
)
Si anteriormente copiaste el ejemplo de App personalizada (<App>
), es posible que puedas eliminar tu getInitialProps
.
¡Eliminar getInitialProps
de pages/_app.js
(cuando sea posible) es importante para aprovechar las nuevas características de Next.js!
El siguiente getInitialProps
no hace nada y puede ser eliminado:
Cambios importantes
@zeit/next-typescript
ya no es necesario
Next.js ahora ignorará el uso de @zeit/next-typescript
y te advertirá que lo elimines. Por favor, elimina este plugin de tu next.config.js
.
Elimina las referencias a @zeit/next-typescript/babel
de tu .babelrc
personalizado (si existe).
El uso de fork-ts-checker-webpack-plugin
también debe ser eliminado de tu next.config.js
.
Las definiciones de TypeScript ahora se publican con el paquete next
, por lo que debes desinstalar @types/next
ya que podrían causar conflictos.
Los siguientes tipos han cambiado:
Esta lista fue creada por la comunidad para ayudarte en la actualización. Si encuentras otras diferencias, por favor envía un pull-request para actualizar esta lista y ayudar a otros usuarios.
De:
a:
La clave config
ahora es una exportación en una página
Ya no puedes exportar una variable personalizada llamada config
desde una página (ej. export { config }
/ export const config ...
).
Esta variable exportada ahora se usa para especificar configuraciones de nivel de página en Next.js como características de AMP opcional y Rutas API.
Debes renombrar cualquier exportación config
que no sea para propósitos de Next.js.
next/dynamic
ya no renderiza "loading..." por defecto durante la carga
Los componentes dinámicos no renderizarán nada por defecto mientras se cargan. Aún puedes personalizar este comportamiento estableciendo la propiedad loading
:
withAmp
ha sido eliminado en favor de un objeto de configuración exportado
Next.js ahora tiene el concepto de configuración a nivel de página, por lo que el componente de orden superior withAmp
ha sido eliminado para mantener la consistencia.
Este cambio puede ser migrado automáticamente ejecutando los siguientes comandos en la raíz de tu proyecto Next.js:
Para realizar esta migración manualmente, o ver qué producirá el codemod, consulta a continuación:
Antes
Después
next export
ya no exporta páginas como index.html
Anteriormente, exportar pages/about.js
resultaría en out/about/index.html
. Este comportamiento ha cambiado para resultar en out/about.html
.
Puedes revertir al comportamiento anterior creando un next.config.js
con el siguiente contenido:
pages/api/
es tratado de manera diferente
Las páginas en pages/api/
ahora son consideradas Rutas API.
Las páginas en este directorio ya no contendrán un bundle del lado del cliente.
Características obsoletas
next/dynamic
ha marcado como obsoleto la carga de múltiples módulos a la vez
La capacidad de cargar múltiples módulos a la vez ha sido marcada como obsoleta en next/dynamic
para estar más cerca de la implementación de React (React.lazy
y Suspense
).
¡Actualizar el código que depende de este comportamiento es relativamente sencillo! Hemos proporcionado un ejemplo de antes/después para ayudarte a migrar tu aplicación:
Antes
Después