Tengo un proyecto Next.js y he creado un servidor personalizado para él. Todo funciona bien en el host local pero no funciona en el alojamiento compartido.
Este es mi archivo de servidor personalizado:
const express = require('express') const next = require('next') require('dotenv/config') const dev = process.env.NODE_ENV !== 'production' const app = next({ dev }) const handle = app.getRequestHandler() const port = process.env.SERVER_PORT || 3000 app.prepare().then(()=>{ const server = express() server.get('*', (req, res) => handle(req, res)) server.listen(port, (err) => { if(err) throw err console.log(`Server listen on http://127.0.0.1:${port}`) }) })Este es el paquete.json:
{ "name": "mywebsite-next", "private": true, "scripts": { "dev": "node server.js", "build": "next build", "start": "node server.js", "lint": "next lint" }, "dependencies": { "dotenv": "^10.0.0", "express": "^4.17.1", "next": "12.0.3", "react": "17.0.2", "react-dom": "17.0.2" }, "devDependencies": { "eslint": "7.32.0", "eslint-config-next": "12.0.3" } }Estoy usando una aplicación para configurar proyectos Node.js llamados como "Configurar proyecto Node.js" en el alojamiento compartido con cPanel. Estaba configurando todos mis proyectos de Node.js, pero esta vez con Next.js dando mensajes de error en el stderr.log:
Error: Cannot find module 'express' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Module.require (internal/modules/cjs/loader.js:692:17) at require (internal/modules/cjs/helpers.js:25:18) at Object.<anonymous> (/home/yusufcod/repositories/mywebsite-next-2/server.js:1:17) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) internal/modules/cjs/loader.js:638 throw err; ^