Tengo proyectos React+next y node js. Quiero implementar ese proyecto en un puerto. Para eso, creé el archivo ts en js y ejecuté el. siguiente carpeta al lado del backend. Ahora mi API y el código de interfaz funcionan en el mismo puerto. para eso, estoy usando express. Pero el problema es que no toma ningún js y CSS, mi código es ese:
app.use(express.static(path.join(__dirname, './server/.next/'))); app.get('*', (req, res) => { res.sendFile(__dirname + '/server/.next/server/pages/index.html'); })cuando abro el archivo index.js en la siguiente carpeta, todas las rutas css y js se crean de esta manera:
<link rel="preload" href="/_next/static/css/33698e28f26f4e47.css"mi css está funcionando si manualmente eliminaré _next en el frente de static/css/ 33698e28f26f4e47. Pero no puedo eliminarlo manualmente debido a index.js creado por el comando npm run build
Debería cambiar la ruta base en su next.config, porque creo que no tiene la ruta "/_next/static/css/" en su raíz node.js.
module.exports = { assetPrefix: 'assetPrefixPath', ... publicRuntimeConfig: { ... basePath: 'basePath', ... }, }funciona para mí. Usé este código en index.js: -
importar siguiente desde "siguiente";
const dev = process.env.NODE_ENV !== "production"; const app = next({ dev }); const handle = app.getRequestHandler(); const port = process.env.PORT || 3000; (async () => { try { await app.prepare(); const server = express(); server.all("*", (req: Request, res: Response) => { return handle(req, res); }); server.listen(port, (err?: any) => { if (err) throw err; console.log(`> Ready on localhost:${port} - env ${process.env.NODE_ENV}`); }); } catch (e) { console.error(e); process.exit(1); } })();