Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

197
Vistas
El componente React devuelve un objeto vacío cuando se procesa en el lado del servidor

Obtengo un comportamiento extraño cuando trato de implementar la representación del lado del servidor en una aplicación de reacción.

 ... Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports. ...

Me di cuenta de que hay un problema general con los archivos de procesamiento con la extensión JSX. Así es como se ve mi código.

./servidor/servidor.js

 app.use('/*', (req, res, next) => { const context = {}; const app = ReactDOMServer.renderToString( <App /> ); console.log(app) fs.readFile(path.resolve('./build/index.html'), 'utf-8', (err, data) => { if (err) { console.log(err); return res.status(500).send("Some Error") } return res.send( data.replace( '<div id="root"></div>', `<div id="root">${app}</div>` ) ) }) })

./servidor/index.js

 require("ignore-styles") require("@babel/register")({ ignore: [/(node_module)/], presets: ['@babel/preset-env', '@babel/preset-react'] }) require('./server')

./src/Aplicación.jsx

 import './App.scss'; import React from 'react'; function App() { return ( <div className='app'> <p>Sample</p> </div> ); } export default App;

./src/index.js

 import React from 'react'; import ReactDOM from 'react-dom'; import './index.scss'; import App from './App'; import reportWebVitals from './reportWebVitals'; import { BrowserRouter as Router } from "react-router-dom"; ReactDOM.hydrate( <Router> <React.StrictMode> <App /> </React.StrictMode> </Router>, document.getElementById('root') ); reportWebVitals();

Y el error ocurre cuando está en ../server/server.js:17:30 que es cuando se llama a ReactDOMServer.renderToString . El problema es que el componente se ve como un objeto vacío después de importarlo. Tengo la sensación de que es un problema con Babel, pero no estoy seguro.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Me encontré con el mismo problema recientemente con una configuración muy similar. Durante SSR, los componentes que tenían la extensión .js devolvieron los componentes de React esperados, mientras que los archivos .jsx devolvieron {} .

En mi caso cambié las importaciones de

 import App from './components/App'

a

 import App from './components/App.jsx'

y solucionó el problema. Después de esta modificación, tanto el renderizado del lado del servidor como del cliente devuelve los componentes esperados.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda