Cannot find module '...' or its corresponding type declarations React Typescript Ошибка для использования псевдонима пути alias
Primary tabs
Cannot find module '...' or its corresponding type declarations
Возникает для строки:
import SortSign from '@app-universal/SortSign';
Задача
Рассмотрим решение для следующей ситуации, компонент без псевдонимов имопртируется так (в какой-то из родительских компонентов):
import SortSign from '../../../universal/SortSign';
а требуется его импортировать так:
import SortSign from '@app-universal/SortSign';
или так:
import SortSign from 'test/SortSign';
Таким образом, зададим для тренировки сразу два псевдонима ( @app-universal и test) для одного и того же пути.
Решение
Необходимо поправить согласованным образом сразу два файла:
- tsconfig.js (обычно лежит в корне проекта) -- в нем нужно редактировать именно секцию compilerOptions, в неё нужно добавить/отредактировать секцию paths, например:
"paths": { "@app-universal/*": [ "components/universal/*" ] },
Конечный результат (весь файл) может выглядеть как-то так:
{ "compilerOptions": { "target": "es5", "lib": [ "dom", "dom.iterable", "esnext" ], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react", "baseUrl": "./src", "paths": { "@app-universal/*": [ "components/universal/*" ], "test/*": [ "components/universal/*" ], }, }, "include": [ "src" ], }
- webpack.config.js -- (в моем случае он извлекался с помощью eject и теперь лежит в папке config/ относительно корня проекта) в нем правим подраздел секции resolve:
resolve: { // ........... alias: { // Support React Native Web // https://www.smashingmagazine.com/2016/08... 'react-native': 'react-native-web', // Allows for better profiling with ReactDevTools ...(isEnvProductionProfile && { 'react-dom$': 'react-dom/profiling', 'scheduler/tracing': 'scheduler/tracing-profiling', }), ...(modules.webpackAliases || {}), '@app-universal': path.resolve(__dirname, '../src/components/universal/'), 'test': path.resolve(__dirname, '../src/components/universal/'), }, // ........... },
-- здесь две точки в начале пути ../src/components/universal/ связаны с помодъемом на уровень выше в моем случае, т.к. у меня webpack.config.js лежит не в корне проекта (учитывайте этот момент для вашего конкретного случая).
- Log in to post comments
- 3787 reads