es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede entender la exportación en Node.js.

Mientras estaba exportando funciones de una carpeta en Node.js, me encontré con cierta ambigüedad.

Declaración de exportación:

function getPosts(req, res){
    res.send("El servidor está en ejecución");
}
export { getPosts };

Declaración de importación:

import express from "express";
import { getPosts } from "../controllers/posts.js";
const router = express.Router();

router.get("/", getPosts);

export default router;

Packet.json:

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "start": "nodemon index.js",
    "test": "echo \"Error: no se especificaron pruebas\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.1",
    "cors": "^2.8.5",
    "express": "^4.17.2",
    "mongoose": "^6.1.4"
  }
}

Error: Error en la consola

Pero cuando utilicé esta declaración: export { getPosts };, no hubo ningún error.

En packet.json he agregado "type": "module".

¿Puede alguien explicar cuándo usar export y cuándo usar module.exports?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Cuando se utiliza Node.js, es importante entender las diferencias entre export y module.exports.

    module.exports es un objeto por defecto disponible en Node.js, mientras que export es una sintaxis más nueva introducida en ES6. module.exports se utiliza típicamente para exportar un único objeto, mientras que export se utiliza para exportar múltiples objetos desde un solo módulo.

    En los fragmentos de código proporcionados, se utiliza export { getPosts } para exportar una sola función del módulo posts.js, mientras que export default router se utiliza para exportar un objeto router del módulo index.js.

    Si te encuentras con una ambigüedad al utilizar export, puede ser útil cambiar a utilizar module.exports en su lugar. Además, asegúrate de que tu archivo package.json incluya el campo "type": "module" para habilitar los módulos ES en Node.js.

Comments are closed.