Estoy en proceso de actualizar mi aplicación de React 17 a React 18 (es una aplicación CRA, si eso importa). Estoy usando react-helmet-async para armar las etiquetas de head . Sin embargo, ahora, cuando intento ejecutar la aplicación, aparece este error:
Module not found: Error: Can't resolve 'react-helmet-async' Por el hecho de que falta react-helmet-async en mi archivo package.json , deduzco que la biblioteca estaba empaquetada anteriormente con React u otra biblioteca que estoy usando y ya no lo está. Sé que podría agregarlo a mi archivo package.json , pero si hay una forma más idiomática de lograr lo mismo en React 18, prefiero hacerlo de esa manera.
Aquí hay una guía sobre cómo actualizar estas cosas a React 18, sin embargo, estoy tan lejos de entender todo lo escrito allí que ni siquiera sé por dónde empezar a averiguar qué debo hacer.
Mi aplicación tiene un caso de uso bastante estándar y no incluye ningún componente de Helmet anidado ni nada por el estilo. Tampoco utiliza la representación del lado del servidor (aunque planeo implementarlo en un futuro próximo, por lo que sería bueno utilizar un enfoque que sea compatible con SSR). El código real en mi proyecto se divide en varios componentes, pero equivale a esto:
import { Routes, Route, BrowserRouter as Router } from 'react-router-dom' import { HelmetProvider, Helmet } from 'react-helmet-async' const pages = [/* array of objects */] const App = () => { <Router basename={process.env.PUBLIC_URL}> <HelmetProvider> {pages.map( ({ pageId, title, description, jsx, path }) => { return( <Route exact path={path} key={pageId}> <Helmet> <html lang='en'> <title>{title}</title> <meta name='description' content={description} /> </Helmet> <AppProvider>{jsx}</AppProvider> </Route> ) } )} </HelmetProvider> </Router> } Si alguien pudiera ayudarme a comprender lo que debo hacer para migrar de react-helmet-async a cualquiera que sea la forma de React 18, se lo agradecería mucho.