Я не могу убедить VSCode разрешить абсолютные пути модуля TypeScript. Относительные пути работают, но абсолютного нет. Я хотел бы, чтобы VSCode разрешал пути к модулю из ./src
.
// this works when source file is in /src/here/there/file.ts
// and importing an interface in /src/api/interfaces.ts
import { Interface } from '../../api/interfaces';
// this doesn't work
import { Interface } from 'api/interfaces';
import { Interface } from '/api/interfaces';
import { Interface } from 'src/api/interfaces';
import { Interface } from '/src/api/interfaces';
// this works but is of course not supposed to be used
import { Interface } from 'c:/..../src/api/interfaces';
Последнее, конечно, не учитывается, так как каждый путь проекта разработчика сильно отличается. Но даже если бы мы установили системную переменную %ProjectXRoot%
, мы не сможем использовать эту переменную в коде. VSCode не разрешит такой путь к модулю. Я пробовал.
// won't work
import { Interface } from '%ProjectXRoot%/api/interfaces';
Установленные версии
• TypeScript: 1,8.10
• VSCode: 1.1.1
Вопрос
Я попытался каким-то образом настроить VSCode для решения абсолютных путей модулей, но не может этого сделать. Я попытался настроить tsconfig.json(в корне проекта), добавив baseUrl
в двух разных местах.
{
...
"compilerOptions": {
"baseUrl": "./src", // doesn't work
...
},
"baseUrl": "./src", // doesn't work either
...
}
Я пробовал такие значения, как src
, ./src
и ./src/
, но ни один из них не работает в каком-либо верхнем месте конфигурации.
Итак, как настроить VSCode для разрешения абсолютных путей модулей из определенной папки?
Если это невозможно, было бы, по крайней мере, лучше разрешить абсолютные пути из корня проекта. Я понятия не имею, как VSCode определяет это? Это где вы открываете папку или это где находится папка .vscode? Без понятия. Но это все равно будет жизнеспособным решением для абсолютных путей. Я пробовал использовать ~
, аналогичный VS, но безрезультатно.
Изменить (неразрешенный)
Как @steinso указывает в своем ответе, все модули, начиная с /
, ./
или ../
считаются относительными. Особенно первый меня полностью удивил, так как я обычно рассматриваю его как корневой путь проекта. Но этот факт в основном означает, что главный вопрос теперь становится следующим: Как я могу обеспечить импорт модулей как абсолютные пути (из некоторого пути корневой папки проекта) вообще? Пути запуска с косой чертой обычно означают абсолютную, но в этом случае это не так.
Даже когда я устанавливаю параметр компилятора moduleResolution
в classic
(так что разрешение модуля не будет выглядеть в папке node_modules
), второй набор вышеперечисленных им операций должен фактически работать все в соответствии с подключенным Microsoft документ. Но по какой-то причине я все еще получаю красные squiggly строки в VSCode и ошибки во время компиляции.
Итак, как я могу импортировать конкретный модуль проекта, не предоставляя ему относительный путь, а скорее его собственный путь к проекту?