VSCode не отображает правильные предложения по импорту для локального связанного пакета

#javascript #node.js #visual-studio-code #es6-modules

Вопрос:

VSCode неправильно предлагает предложения по импорту для пакета, который был связан локально (с помощью ссылки npm).

Обычно, когда я хочу использовать класс из пакета, я пишу Foo и нажимаю вкладку, чтобы автоматически добавить импорт для myModule/Foo.js . Но в моей текущей настройке я вообще не получаю предложений по импорту для MyModule.

Моя структура папок выглядит следующим образом:

 project
|-  server (node package)
|   |-  node_modules/
|   |-  src/
|   |-  package.json
|-  myModule (node package)
    |-  src/
    |-  package.json
 

Все пакеты имеют тип модуля (импорт/экспорт es6).

 "type": "module"
 

Пакет MyModule использует экспорт вложенного пути, чтобы скрыть папку src:

 "exports": {
  "./*": "./src/*"
}
 

Затем я использовал npm link in project/myModule , а затем npm link myModule in project/server .
Затем я могу использовать MyModule server/src/index.js следующим образом:

 import Foo from "myModule/Foo.js"
import Four from "myModule/Bar/Four.js"
 

В этот момент Узел счастлив. К сожалению, VSCode-это не так. При использовании Foo или Bar и использовании предложения IntelliSense для автоматического добавления импорта я получаю следующий результат:

  • Никаких предложений по импорту при описанной выше настройке.
  • VSCode добавляет импорт по относительному пути (например: ../../myModule/src/Foo.js ), если я удаляю экспорт подпутей из MyModule.
  • Я попытался добавить a jsconfig.json с псевдонимом пути, например: "myModule/*": ["./node_modules/myModule/src/*"] или "myModule/*": ["./node_modules/myModule/*"] , но, к сожалению, это не имело значения.

Что я могу сделать, чтобы снова получить рабочие предложения по импорту в VSCode?

Ответ №1:

Размещение jsconfig.json в project/ "myModule/*": ["./myModule/src/*"] качестве псевдонима пути снова сделало VSCode счастливым.

Это может создать другие проблемы в дальнейшем, так как сейчас я указываю этот псевдоним для каждого пакета project/ . Другие предложения по — прежнему приветствуются, а также объяснение, почему jsconfig.json in project/server/ работал не так, как ожидалось.