Импорт интellisense для пользовательского пакета не работает в VS Code.

Вопрос или проблема

Привет, я создаю 2 простых тестовых проекта, где проект A является пользовательским пакетом NPM, а проект B использует его. Проблема в том, что нет интеллектуального импорта.

Моя структура папок выглядит так:

структура папок npm-проекта

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, я вижу это

error1

Хотя ручной ввод импорта работает

импорт работает

Пожалуйста, дайте советы!

.

Ответ или решение

Вопрос: Импорт 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 с вашими проектами. Это может помочь сообществу увидеть проблему в контексте и предложить конкретные решения.

Надеюсь, эта информация будет вам полезна! Если у вас возникнут ещё вопросы, не стесняйтесь спрашивать.

Оцените материал
Добавить комментарий

Капча загружается...