#javascript #reactjs #typescript
Вопрос:
Я пытаюсь написать библиотеку с помощью TypeScript и Parcel. Все в порядке, пока я не попытаюсь импортировать его в другое приложение.
В библиотеке есть index.ts
файл, который собирает компоненты и экспортирует их:
import Component1 from "./components/Component1";
import Component2 from './components/Component2';
export {
Component1,
Component2,
};
После сборки я получаю index.js
, index.css
и index.d.ts
.
В index.d.ts
файле export
он был преобразован в export default
:
export default Component1;
export default Component2;
Я связал свою библиотеку с yarn с моим потребительским приложением. Когда я хочу import { Component1 } from 'myLibrary';
, я получаю следующую ошибку: Module '"myLibrary"' has no exported member 'Component1'. Did you mean to use 'import Component1 from "myLibrary"' instead?
. Теперь, когда я пытаюсь импортировать значение по умолчанию (как в index.d.ts
) import Component1 from 'myLibrary';
, ошибка изменяется на: Attempted import error: 'myLibrary' does not contain a default export (imported as 'Component1').
Почему происходит export
преобразование и как я могу обойти это?
РЕДАКТИРОВАТЬ: библиотека создается и упаковывается посылкой, потребитель обрабатывается реактивными скриптами. После предложения мистера Манхэттена:
index.ts:
export {Component1} from "./components/Component1";
export {Component2} from './components/Component2';
сгенерированный index.d.ts:
export {Component1} from "./components/Component1";
export {Component2} from './components/Component2';
потребитель:
function App() => {
render(
<>
<Component1 />
<Component2 />
</>
)
};
Ошибка:
./src/App.tsx
[1] Attempted import error: 'Component2' is not exported from 'myLibrary'.
Ответ №1:
вы можете напрямую экспортировать:
export Component1 from "./components/Component1";
export Component2 from './components/Component2';
Комментарии:
1. Это снова приводит к
Attempted import error: 'Footer' is not exported from 'samoa_pwa'.
2. Звучит как другая (новая) ошибка, которая обнаруживается после исправления первой. Можете ли вы поделиться полным воспроизведением?
3. Для ошибки были добавлены новые файлы.
4. Хм, сгенерированный index.d.ts теперь выглядит правильно. у меня нет опыта создания библиотек react. указывает ли package.json индексные файлы (
"main": "index.js", "module": "index.esm.js", "types": "index.d.ts",
а также указывает на этот точный файл index.ts?5. поскольку я здесь ничего не знаю, я смотрел, как это делается в github.com/sixfootsixdesigns/React-Library-Boilerplate , может быть, вы можете сравнить это с тем, что у вас есть, и найти там ошибки?
Ответ №2:
Вы пытаетесь повторно экспортировать именованный экспорт, который не существует. Попробуйте вместо этого повторно экспортировать значение по умолчанию:
export { default as Component1 } from './components/Component1';
export { default as Component2 } from './components/Component2';