- Вопрос или проблема
- Ответ или решение
- Вопрос: Импорт Intellisense для пользовательского пакета не работает в VS Code
- 1. Структура проекта
- 2. Конфигурация TypeScript
- 3. Правильный импорт в проекте B
- 4. Проверка связи между проектами
- 5. Убедитесь, что VS Code распознаёт типы
- 6. Дополнительные советы
- 7. Заключение
Вопрос или проблема
Привет, я создаю 2 простых тестовых проекта, где проект A является пользовательским пакетом NPM, а проект B использует его. Проблема в том, что нет интеллектуального импорта.
Моя структура папок выглядит так:
project-a/src/index.ts
export function MRTAdd(v1: number, v2: number): number {
return v1 + v2;
}
project-a/package.json
{
"name": "npm-project-a",
"version": "1.0.0",
"description": "",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"module": "commonjs",
"scripts": {
"build": "tsc"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"lodash": "^4.17.21"
}
}
project-a/tsconfig.json
{
"compilerOptions": {
"target": "es2016",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"module": "commonjs",
"declaration": true,
"declarationMap": true,
"outDir": "./dist",
"skipLibCheck": true
}
}
Далее я запустил npm build
, что даёт мне сборку tsc внутри папки dist
Следующий шаг, который я сделал, это npm link
внутри корня project-a, а затем в project-b я npm link npm-project-a
Теперь, когда я вижу, что он установлен в node_modules, когда я пытаюсь ввести MRTAdd, я вижу это
Хотя ручной ввод импорта работает
Пожалуйста, дайте советы!
.
Ответ или решение
Вопрос: Импорт Intellisense для пользовательского пакета не работает в VS Code
Здравствуйте! Ваша проблема с отсутствием Intellisense для пользовательского пакета в Visual Studio Code может быть решена с учётом множества факторов. Давайте подробно разберём вашу ситуацию.
1. Структура проекта
Ваш проект состоит из двух частей: project-a (ваш пользовательский пакет) и project-b (проект, который использует этот пакет). Вы правильно организовали структуру и депенденси, но важно убедиться, что все настройки в ваших конфигурационных файлах корректны.
2. Конфигурация TypeScript
В вашем tsconfig.json
для project-a всё выглядит неплохо. Опция declaration
установлена в true
, что означает, что TypeScript должен генерировать .d.ts
файлы, содержащие определения типов. Однако, чтобы Intellisense работал корректно, убедитесь, что ваши типы доступны в project-b:
- Убедитесь, что
/dist/index.d.ts
файл действительно создаётся после сборки проекта и что в нём присутствуют все необходимые экспорты.
3. Правильный импорт в проекте B
Убедитесь, что вы импортируете ваш пакет в project-b правильно. Например:
import { MRTAdd } from 'npm-project-a';
Если использование Intellisense не срабатывает, возможно, система не находит типы.
4. Проверка связи между проектами
После выполнения команды npm link
, убедитесь, что:
- Пакет действительно установлен в project-b. Проверьте, есть ли папка
node_modules/npm-project-a
и соответствующие файлы внутри.
5. Убедитесь, что VS Code распознаёт типы
Иногда VS Code может не распознать изменения сразу. Попробуйте:
- Перезапустить VS Code.
- Удалить папку
node_modules
в project-b и выполнитьnpm install
заново. - Убедитесь, что версии TypeScript совпадают в обоих проектах. Разные версии могут приводить к проблемам совместимости.
6. Дополнительные советы
- Проверьте настройки VS Code. Убедитесь, что в настройках проекта не отключены необходимые функции IntelliSense.
- Проверьте расширения для TypeScript и JavaScript в VS Code; возможно, стоит обновить или переустановить их.
- В каждой версии TypeScript могут быть изменения, влияющие на поведение Intellisense; если вы используете старую версию, возможно, стоит обновить её.
7. Заключение
Если после выполнения всех вышеперечисленных шагов проблема не решена, возможно, стоит рассмотреть возможность создания простого репозитория на GitHub с вашими проектами. Это может помочь сообществу увидеть проблему в контексте и предложить конкретные решения.
Надеюсь, эта информация будет вам полезна! Если у вас возникнут ещё вопросы, не стесняйтесь спрашивать.