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

456
Vistas
Módulos ES y jsconfig.json: Error [ERR_MODULE_NOT_FOUND]

Obtuve un proyecto de aplicación web de nodo que usa JS normal.

Estoy tratando de establecer algunas rutas usando jsconfig.json . Intenté usar las Subpath imports predeterminadas del nodo e incluso si funciona, vscode intellisense dejó de funcionar.

Descubrí que podía usar jsconfig.json , así que configuré este archivo

 { "compilerOptions": { "target": "es6", "module": "commonjs", "baseUrl": "./", "paths": { "@controllers/*": ["node/controllers/*"], }, }, "exclude": ["node_modules"] }

Y en mi package.json agregué

 "type": "module",

Mi estructura de carpetas es

 ├── node │ └──controllers │ └── foo.js ├── server.js ├── jsconfig.json └── package.json

Pero cuando intento importar desde server.js

 import { foo } from '@controllers/foo.js' // or import { foo } from '@controllers/foo'

foo.js

 export const foo = 'Hello server'

yo obtengo

 node:internal/process/esm_loader:74 internalBinding('errors').triggerUncaughtException( Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@controllers/foo.js' imported from /Users/Alvaro/Sites/test/server.js at new NodeError (node:internal/errors:363:5) at packageResolve (node:internal/modules/esm/resolve:698:9) at moduleResolve (node:internal/modules/esm/resolve:739:18) at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:853:11) at Loader.resolve (node:internal/modules/esm/loader:89:40) at Loader.getModuleJob (node:internal/modules/esm/loader:242:28) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:73:40) at link (node:internal/modules/esm/module_job:72:36) { code: 'ERR_MODULE_NOT_FOUND'
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Después de horas de investigación, descubrí que es muy difícil tener una ruta de alias personalizada al usar esm y muy fácil de configurar para commonjs ,

pero se puede lograr, de una manera ligeramente diferente cuando usa esm , escribiré la solución para la implementación de esm en el método 1 y luego para commonjs en el método 2

Método 1

Paso 0:

eliminar jsconfig.json

Paso 1:

en su package.json agregue una propiedad de exports ,

 "name": "package-name" "exports":{ "./@controllers/" : "./node/controllers/" }

Nota: no olvide el '/' después de @controllers y /node/controllers/

Paso 2

tendrás que importar el archivo

 import {foo} from "package-name/controllers/index.js" /* package-name is the same value as the 'name' property in the package.json */

para obtener más información sobre la propiedad de exports en package.json , consulte aquí

------------------------------XXXXXXXXX------------------- ---------------

Método 2

no puedes usar es modules en este método

Paso 0

instale el paquete module-alias .

npm i module-alias

elimine type:module si existe en package.json o cambie el valor a commonjs ;

Paso 1

Agregue el siguiente código en la línea de inicio del archivo que se especifica como entry point en package.json

require(module-alias/register)

verifique la propiedad main en package.json en el caso del autor, debería ser server.js .

en package.json agrega esto

 "_moduleAliases": { "@root" : ".", // Don't forget to mnetion this "@controllers" : "node/controllers/*" }

Ahora puede requerir módulos de directorios como a continuación

 const {foo} = require("@controllers/foo.js") // if foo is named export //or const foo = require("@controllers/foo.js");

puede consultar más sobre la biblioteca module-alias aquí

about 4 years ago · Juan Pablo Isaza Denunciar

0

Lo que has probado es casi correcto.

puede hacer que los alias funcionen, pero tiene que comenzar con # .

por ejemplo: en package.json

 "imports": { "#app": "./app.js" }

y en jsconfig.json

 { "compilerOptions": { "paths": { "#app": ["./app.js"] } } }
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