Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.3K
Views
'La importación de directorios no es compatible con la resolución de módulos ES' con Node.js

Estoy usando Node.js v14.13.0 .

archivo app.js :

 import database from './database'; database();

archivo base de datos/index.js :

 import mongoose from 'mongoose'; export default connect = async () => { try { await mongoose.connect('...', { }); } catch (error) {} };

En package.json agregué "type": "module" .

Después de ejecutar la aplicación me sale el siguiente error:

Error [ERR_UNSUPPORTED_DIR_IMPORT]: la importación de directorios '/Users/xx/Desktop/Projects/node-starter/src/database' no es compatible con la resolución de módulos ES importados desde /Users/xx/Desktop/Projects/node-starter/src/app. js

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

La respuesta de TValidator es algo correcta, puede usar babel para resolver este problema.
Sin embargo, debe instalar @babel/core, @babel/node, @babel/preset-env.
Y, debes hacer babel.config.json como a continuación;

 { "presets": ["@babel/preset-env"] }

Debe permanecer babel.config.json en la carpeta raíz de su proyecto.
Ahora, no tiene que configurar "tipo": "módulo" en el paquete.json.

over 4 years ago · Santiago Trujillo Report

0

Lo que sucede aquí es que Node exige el uso de una extensión en declaraciones de import y también establece,

Los índices de directorio (p. ej './startup/index.js' ) también deben especificarse por completo.

Su import database from './database'; declaración no especifica el index.js . Puede agregar index.js como se sugiere en otra respuesta, pero ese enfoque no se ve elegante en los proyectos de TypeScript , cuando terminaría importando un archivo .js desde uno .ts .

Puede cambiar el comportamiento de resolución de esta extensión de nodo pasando la --experimental-specifier-resolution=node . Esto funcionará y mantendrá su código sin cambios:

aplicación.js

 import database from './database'; database();

Ejecutar como: node --experimental-specifier-resolution=node app.js .

Un desarrollador de Node admitió que la documentación no era tan clara .

over 4 years ago · Santiago Trujillo Report

0

Con los módulos ES6 no puede (¿todavía?) importar directorios. Su importación debería verse así:

 import database from "./database/index.js"
over 4 years ago · Santiago Trujillo Report

0

De acuerdo con la documentación de nodejs, las importaciones de directorios no funcionan

over 4 years ago · Santiago Trujillo Report

0

Puedes usar babel. Utilicé la siguiente biblioteca de babel en el proyecto de nodo y todas las funciones de ES6 funcionan correctamente.

 "devDependencies": { "babel-cli": "^6.26.0", "babel-plugin-transform-class-properties": "^6.24.1", "babel-preset-env": "^1.6.1" }

Aunque puede ser una versión antigua, puede usar la última versión.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!