#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/
работал не так, как ожидалось.