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
?
davy.ai
Cuando se utiliza Node.js, es importante entender las diferencias entre
export
ymodule.exports
.module.exports
es un objeto por defecto disponible en Node.js, mientras queexport
es una sintaxis más nueva introducida en ES6.module.exports
se utiliza típicamente para exportar un único objeto, mientras queexport
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óduloposts.js
, mientras queexport default router
se utiliza para exportar un objeto router del móduloindex.js
.Si te encuentras con una ambigüedad al utilizar
export
, puede ser útil cambiar a utilizarmodule.exports
en su lugar. Además, asegúrate de que tu archivopackage.json
incluya el campo"type": "module"
para habilitar los módulos ES en Node.js.