typescript - No puedo importar mi módulo si el módulo importador tiene habilitado moduleResolution: bundler
Tengo un módulo A que es importado por un módulo B. El módulo B tiene el siguiente tsconfig.json:
{
"compilerOptions": {
"strict": true,
"module": "esnext",
"moduleResolution": "bundler",
}
}
Si intento importar el módulo A con esta configuración, obtengo el siguiente error:
Could not find a declaration file for module 'moduleA'. 'node_modules/moduleA/index.mjs' implicitly has an 'any' type.
There are types at 'node_modules/moduleA/index.d.ts', but this result could not be resolved when respecting package.json "exports". The 'moduleA' library may need to update its package.json or typings.
Sin embargo, si cambio moduleResolution a "node", todo funciona bien. Este es el package.json del módulo A:
{
"name": "ModuleA",
"version": "1.0.0",
"main": "index.mjs",
"module": "index.mjs",
"types": "index.d.ts",
"type": "module",
"files": [
"index.cjs",
"index.mjs",
"index.d.ts"
],
"exports": {
".": {
"import": {
"types": "./index.d.ts",
"default": "./index.mjs"
},
"require": {
"types": "./index.d.ts",
"default": "./index.cjs"
}
}
},
"engines": {
"node": ">=18.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
}
}
He verificado que todos los archivos que package.json existen y están en la ruta correcta y así es. Intenté buscar documentación sobre el modo "bundler", pero no pude encontrar mucho ya que esta es una función nueva. ¿Alguien sabe qué podría estar causando esto?
También, en caso de que pueda ser relevante, este es el formato del index.d.ts en el módulo A:
type A = {
someField: someType;
...
};
type B = {
someOtherField: someType;
...
};
// More types here
export {
A, B, // More types
};
Respuesta #1
Intenta extender compilerOptions con "customConditions": ["import"]: https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#customconditions.