VS Code: отладчик никогда не выходит из функции генератора - PullRequest
1 голос
/ 04 апреля 2020

VS C 1.43.2, TS 3.8.3, Node v13.11.0

С целью компиляции по умолчанию TS C разворачивает функции генератора в операторы switch. Интерактивный отладчик может затем входить и выходить из вызовов метода next() генератора каждый раз, когда он вызывается.

Однако при нацеливании на цели компиляции JS, которые сохраняют функции генератора, отладчик может step в вызов для создания генератора, но перешагнув через внутри генератора, никогда не приводит к выходу отладчика.

Например, если вы прервете вызов gen() в файле примера и затем нажмите F11, чтобы войти в функцию генератора, никакое нажатие F10 не отступит от него. Остальная часть файла будет выполняться с отладчиком, все еще находящимся в области действия генератора. Поведение будет таким же, если вы прервете вызов next() и нажмете F11.

Это ограничение отладчика VS C или есть какая-то дополнительная конфигурация, которую мне нужно установить для более Интуитивно понятный опыт интерактивной отладки?

Запуск конфигурации:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "some name",
            "program": "${file}",
            "outFiles": ["${workspaceFolder}/**/*.js"],
            "runtimeArgs": ["--experimental-modules", "--es-module-specifier-resolution=node"],
            "smartStep": true,
        }
    ]
}

Конфигурация TS:

{
    "compilerOptions": {
        "sourceMap": true,
        "target": "ESNext"
    },
}

Пример файла TS:

function* gen() {
    for (let i = 0; i < 3; i++) {
        yield i;
    }
}

const x = gen();
const y = 2 + 2;
console.log(x.next());
console.log(x.next());
console.log(x.next());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...