Tengo un proyecto de mecanografiado donde obtengo el ERROR_MODULE_NOT_FOUND 'path/to/compiled/file' cuando intento ejecutar mi archivo app.js compilado con node. Sin embargo, me deshago de este error si agrego una extensión .js a la declaración de importación en mi app.js como esta import { function } from "./path/file.js"; ¿Cómo hago para que el compilador TypeScript agregue automáticamente estas extensiones .js? Alternativamente, ¿hacer que el nodo funcione sin las extensiones .js?
Mi tsconfig.json se ve así:
{ "compilerOptions": { "module": "esnext", "target": "es5", "noImplicitReturns": true, "noUnusedLocals": true, "outDir": "dist", "sourceMap": true, "moduleResolution": "node", "esModuleInterop": true, "isolatedModules": true, "resolveJsonModule": true, "typeRoots": ["./src/types", "node_modules/@types"], "baseUrl": "./src", "paths": { "types": ["types"], "types/*": ["types/*"], "@data/*": ["data/*"], "@execute/*": ["execute/*"], "@indicators/*": ["indicators/*"], "@services/*": ["services/*"], "@strategies/*": ["strategies/*"], "*": ["node_modules/*"] } }, "compileOnSave": true, "include": ["src", "test", "dist"], "exlude": ["src/types"] } Mi app.ts se ve así:
import { function } from "./path/file"; function(); console.log("test"); export {};Estaba teniendo exactamente el mismo problema al intentar configurar un nuevo proyecto de mecanografiado en node.
Lo que me resolvió al final fue reemplazar esnext por commonjs en la opción del módulo.
Anteriormente había usado esnext debido a una espera de nivel superior, pero solucioné eso envolviendo la espera con una función asíncrona.
No puedo explicar por qué las importaciones de javascript compiladas con esnext no tienen la extensión .js, o cómo modificar el compilador para agregar esta extensión para los módulos locales que también se compilarán.