Estuve trabajando durante una semana en Next.js y decidí probarlo fuera de la configuración de desarrollo. Después de corregir algunos errores, logré compilarlo 'hacer que comience' sin errores, pero terminé en: {"message":"Route GET:/ not found","error":"Not Found","statusCode":404} al abrir http://localhost:3000.
Entonces, después de algunas pruebas y algunos intentos dentro de un contenedor docker, probé la configuración más simple que resultó en el mismo problema:
npx create-next-app test cd test npm run dev //works when opening localhost:3000 so ^C to stop npm run buildque dan:
> test@0.1.0 build > next build info - Checking validity of types info - Creating an optimized production build info - Compiled successfully info - Collecting page data info - Generating static pages (3/3) info - Finalizing page optimization Page Size First Load JS ┌ ○ / 6.25 kB 81.2 kB ├ └ css/149b18973e5508c7.css 655 B ├ /_app 0 B 74.9 kB ├ ○ /404 193 B 75.1 kB └ λ /api/hello 0 B 74.9 kB + First Load JS shared by all 74.9 kB ├ chunks/framework-1f10003e17636e37.js 45 kB ├ chunks/main-fc7d2f0e2098927e.js 28.7 kB ├ chunks/pages/_app-69da446bea935969.js 493 B ├ chunks/webpack-69bfa6990bb9e155.js 769 B └ css/27d177a30947857b.css 194 B λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps) ○ (Static) automatically rendered as static HTML (uses no initial props)y finalmente:
npm run startque dan un aliento:
> test@0.1.0 start > next start ready - started server on 0.0.0.0:3000, url: http://localhost:3000Pero desafortunadamente, abrir http://localhost:3000 da como resultado:
{"message":"Route GET:/ not found","error":"Not Found","statusCode":404}¿Alguien puede decirme qué me estoy perdiendo?
Parece que no puedo hacerlo más simple, pero ni siquiera está funcionando ...
Gracias a todos
(Respuesta propia para aquellos que podrían tener el mismo problema)
Aparentemente, existe una sutil diferencia entre npx (ejecutable) y los scripts ejecutados por npm.
De hecho, jugando con diferentes instrucciones me topé con esto:
> npm run startcon paquete.json:
{ ... "scripts": { "dev": "next dev", "build": "next build", "start": "next start -p 8000", "lint": "next lint" }, ... }no es lo mismo que:
> npx next start -p 8000Porque npm abrirá un servidor en el puerto 3000 (eso no funciona) y npx en el puerto 8000 (eso funciona).