Estoy tratando de escribir una biblioteca con TypeScript y Parcel. Todo está bien hasta que intento importarlo en otra aplicación.
En la biblioteca hay un archivo index.ts
que reúne los componentes y los exporta:
import Component1 from "./components/Component1"; import Component2 from './components/Component2'; export { Component1, Component2, };
Después de compilar, obtengo index.js
, index.css
e index.d.ts
. En el archivo index.d.ts
, la export
se ha convertido a export default
:
export default Component1; export default Component2;
Enlacé mi biblioteca con yarn a mi aplicación de consumidor. Cuando quiero import { Component1 } from 'myLibrary';
Recibo el siguiente error: Module '"myLibrary"' has no exported member 'Component1'. Did you mean to use 'import Component1 from "myLibrary"' instead?
. Ahora, cuando intento importar el valor predeterminado (como está en index.d.ts
), import Component1 from 'myLibrary';
el error cambia a: Attempted import error: 'myLibrary' does not contain a default export (imported as 'Component1').
¿Por qué ocurre la conversión de export
y cómo puedo evitar esto?
EDITAR: la biblioteca se construye y empaqueta por paquete, el consumidor se maneja mediante scripts de reacción. Después de la sugerencia del Sr. Manhattan:
índice.ts:
export {Component1} from "./components/Component1"; export {Component2} from './components/Component2';
index.d.ts generado:
export {Component1} from "./components/Component1"; export {Component2} from './components/Component2';
consumidor:
function App() => { render( <> <Component1 /> <Component2 /> </> ) };
Error:
./src/App.tsx [1] Attempted import error: 'Component2' is not exported from 'myLibrary'.
puedes exportar directamente:
export Component1 from "./components/Component1"; export Component2 from './components/Component2';
Está intentando volver a exportar una exportación con nombre que no existe. Intente volver a exportar el valor predeterminado en su lugar:
export { default as Component1 } from './components/Component1'; export { default as Component2 } from './components/Component2';