Actualmente estoy usando "react": "17.0.2" y he instalado "react-markdown": "^7.0.1" a través npm i react-markdown Estoy usando este paquete para mostrar mi texto enriquecido que Estoy obteniendo de mi Strapi CMS. He usado el siguiente código para mostrar el contenido:
import ReactMarkdown from "react-markdown"; export default function name({ posts }) { return ( <> <div> <div> {posts.Title} </div> </div> <div> <ReactMarkdown source={posts.Content} escapeHtml={false} /> </div> </> ); } export async function getStaticProps() { const res = await fetch("http://localhost:1337/blogs"); const posts = await res.json(); return { props: { posts }, }; }Pero cuando ejecuto esto me da el siguiente error:
Estoy usando el nodo v14.17.0 y he intentado agregar "type": "module" .
Mi paquete.json:
{ "name": "passportlegacy", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "axios": "^0.21.1", "babel-plugin-inline-react-svg": "^2.0.1", "next": "11.0.1", "next-images": "^1.8.1", "react": "17.0.2", "react-dom": "17.0.2", "react-map-gl": "^6.1.16", "react-markdown": "^7.0.1", }, "devDependencies": { "@svgr/webpack": "^5.5.0", "@types/react": "17.0.16", "eslint": "7.32.0", "eslint-config-next": "11.0.1", "typescript": "4.3.5" } }Resolví esto simplemente colocando react-markdown en la versión 6.
Con la versión 7 de react-markdown, se trasladaron solo a ESM. Hay una explicación de lo que eso significa aquí , pero parece que Jest (versión 27) todavía solo tiene soporte experimental para módulos ESM puros a partir de octubre de 2021. No pude hacer que funcionara en mi proyecto, y la versión 6 de react-markdown funciona bien por ahora.
Creo que la próxima versión principal de Jest (versión 28) podría ser compatible con ESM.
Actualmente, Node está tratando su archivo .js como CommonJS. Debe decirle a Node que lo trate como un módulo ES.
Intente agregar "type": "module" en su archivo package.json .
Puede colocarlo en cualquier lugar en el nivel superior. P.ej:
{ "name": "passportlegacy", "version": "0.1.0", "type": "module", "private": true, "scripts": { ... } ... }Más información: paquete.json y extensiones de archivo - Documentación de Node.js 14.x LTS
Usa esta versión
"dependencies": { "react-markdown": "^6.0.0" }Entonces emite
npm install