У меня есть следующая структура проекта:IntelliJ/WebStorm не найти ссылку на импорт
- корень
- ГКЗ
- скрипты
- main.js
- foo.js
- скрипты
- ГКЗ
Внутри моего main.js
файла, я импортировать foo.js
так:
import 'src/scripts/foo.js'
Когда я нажимаю на утверждение импорта выше и перейти к Navigate -> Declaration
я получаю супер полезное сообщение, которое сообщает Cannot find declaration to go
.
Это заставляет работать с большим разочарованием, потому что редактор в принципе понятия не имеет, какие файлы импортируют другие файлы. Это означает, что я не могу использовать полезные особенности IDE, как поиска ссылок при перемещении файла, найти использования, и т.д.
Если изменить оператор импорта, чтобы быть относительными, он работает в целом:
import './foo.js'
Однако мы стремимся к абсолютному импорту, a habit we picked up from writing python apps.
Я наткнулся на Webstorm: "Cannot Resolve Directory", и это дало мне идею mark
мой src
каталог как Sources Root
. После того, как сделать это, я мог бы изменить мое заявление импорта в main.js
к
import '/scripts/foo.js' //notice the leading forward slash
Ну, это немного лучше, потому что теперь я могу по крайней мере Navigate -> Declaration
, но это не идеально, потому что теперь я не могу отметить какой-либо из каталогов под src
как тест, ресурс и т. д.
Так почему же IntelliJ/webstorm так сложно делать?
Относительные пути - это стандарт дезактома сообщества JS, с предлагаемым форматом, который означает 'scripts/foo.js' внутри модуля с именем' src'. Как вы будете ссылаться на внешние модули в предложенном вами стиле? Для меня это похоже на хороший пример того, что отклонение от стандартов просто требует проблем с минимальными преимуществами. – loganfsmyth
Это справедливая точка зрения, и я думаю, что не знал/рассматривал формат, который я использовал, отклоненный от канонического способа импорта. Я немного задумался о github, и вы правы, большинство людей используют относительные пути. Я верю, что ответ заключается в том, чтобы отойти от абсолютных путей. Если вы дадите ответ ниже, я соглашусь с ним. –