Проблемы с настройкой машинописи с помощью кода Visual Studio - PullRequest
0 голосов
/ 26 ноября 2018

Фон

Я новичок в коде nodejs / typescript / VisualStudio и пытался создать небольшой проект с использованием express & sequelize-typescript.Я начал проект с Visual Studio (НЕ с кодом), но у меня было много проблем с ложными ошибками или без ошибок, поэтому я переключился на Visual Studio Code.Я больше не уверен, установил ли Visual Studio (НЕ код) nodejs сам по себе или / и установил ли я дополнительный.Но я знаю, что у меня есть один npm в переменной PATH.

ts-nameof

Затем в этом проекте мне нужно было сделать запрос, чтобы сиквелизировать с помощьютак что вместо жесткого кодирования имени столбца или использования имени строки safepe (я ненавижу строку!) я узнал ts-nameof.

Поэтому я следую инструкции:

  • npm ittypescript -D
  • Добавить компилятор плагиновOptions в tsconfig.json
  • Добавить конфигурацию "typescript.tsdk"

Когда все сходит с ума

  • ttypescript не будет установлен, потому что у меня не было машинописного текста (а?), Поэтому давайте установим его: npm i typcript
  • Теперь давайте используем метод nameof ()!Hum Visual Studio Code говорит мне, что не может его найти.Поэтому я добавил

"node_modules / ts-nameof / ts-nameof.d.ts"

в свойстве tsconfig.json "files".Да, это работает!

  • Не давайте запустить задачу "tsc: watch - tsconfig.json" - да, это скомпилировать!

ReferenceError: nameof не определено

, но среда выполнения не понравилась ...

  • При просмотретерминал все еще использует tsc вместо tscc, поэтому, насколько я понимаю, я должен настроить tasks.json, так что давайте сделаем это!Visual Studio сгенерировал для меня основной файл с помощью build / watch.Я просто добавил свойства команды / типа.(См. Файл в конце для справки)

Бонус для других пользователей:

  • Если вы видите ошибку

    Процесс терминалазавершается с кодом выхода: 2

это может быть потому, что вы используете node_modules / npm / ttsc, который предназначен только для Linux / OSX (я не знаю, это будет работать на Windows 10со встроенной функцией Linux)

  • Также установка ttypescript global может быть не очень хорошей идеей, поскольку она установит его в вашу пользовательскую директорию, и вы не сможете использовать% AppData% в tasks.json, поэтомувам придется использовать полный путь, например C: \ Users \ 0xcdcdcdcd \ AppData \ Roaming ...

Задания против вас

  • Давайтескомпилируйте его один раз, запустив задачу "node_modules.bin \ ttsc.cmd". Наконец-то!

Кстати: у меня были другие проблемы с этим файлом, см. примечание для tasks.json внизу...

  • Теперь давайте добавим метки для каждой задачи - отлично, теперь я вижу обе задачи вместо единственного "node_m"odules.bin \ ttsc.cmd».Что, теперь он использует tsc!?

Вопросы / проблемы

  • Делая все это, я безуспешно пытался погуглить свои многочисленные проблемы.Я немного беспокоюсь обо всех проблемах, которые я получил, почему я ничего не могу найти?Хорошо, возможно, ttypescript никем не используется, но все проблемы, которые у меня есть с tasks.json ...?

У меня возникла проблема с поиском google google typcript / nodejs в Visual Studio (а не в коде), потому что все используют код Visual Studio ... Так что с моей стороны определенно что-то не так.

  • Может быть, лучше использовать что-то кроме ts-nameof (что привело меня к использованию ttypescript)?Если это не лучший выбор, что бы вы мне порекомендовали.

  • Мне все еще нужно выяснить, как настроить запуск задачи «смотреть» И как иметь 2 задачи в задачах.json ...

  • Продолжайте читать, чтобы узнать о дополнительных проблемах, которые у меня есть, например, с параметрами "typescript.tsdk" или "problemMatchers".

Файлы

.vscode / tasks.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "windows": {
        "command": "node_modules\\.bin\\ttsc.cmd",
        "type": "shell"
    },
    "tasks": [
        {
            //"label": "ttsc: watch",
            "type": "typescript",
            "tsconfig": "tsconfig.json",
            "option": "watch",
            "problemMatcher": [
                "$tsc-watch"
            ]
        },
        {
            //"label": "ttsc: build",
            "type": "typescript",
            "tsconfig": "tsconfig.json",
            "problemMatcher": [
                "$tsc"
            ]
        }
    ],
    "problemMatchers": [
        "$tsc"
    ]
}

Кажется, что код Visual Studio не работает с этим файлом, из документации я должен иметь возможность использовать команду / тип (и я думаю, что «окна») в объекте «задач», который он не отпускает.

Также при запуске моей задачи с этим файлом код Visual Studio запрашивает у меня файл ProblemMatcher и добавляет это свойство в корень tasks.json.

РЕДАКТИРОВАТЬ: Iтакже пытался заполнить свойства команды / типа везде (в корне, во всех моих задачах и в «окнах» (в корне и во всех моих задачах).

.vscode / settings.json (Workspace)

{
    "files.exclude": {
        "node_modules": true,

        // visual studio project
        "obj": true,
        "bin": true
    },

    // ts-nameof
    "typescript.tsdk": "node_modules/ttypescript/lib"
}

Я добавил «typescript.tsdk» в пользовательские настройки на всякий случай, но я могу написать что-нибудь в это поле, не важно, что я никогда не получаю ошибку.

tsconfig.json

{
  "compilerOptions": {
    "target": "esnext",
    "module": "commonjs",
    "sourceMap": true,
    "noImplicitAny": true,
    "outDir": "dist",
    "baseUrl": "./dist/",
    "plugins": [{ "transform": "ts-nameof", "type": "raw" }],

    // for sequelize-typescript models
    "experimentalDecorators": true,
    // for sequelize-typescript
    "emitDecoratorMetadata": true
  },
  // Also part of experimentalDecorators
  "include": [
    "."
  ],
  "exclude": [
    "node_modules",

    // VisualStudio project
    "obj",
    "bin"
  ],
  "files": [ "node_modules/ts-nameof/ts-nameof.d.ts" ]
}

1 Ответ

0 голосов
/ 29 ноября 2018

Я до сих пор понятия не имею, что происходит, но синтаксис tasks.json , о котором я читал, кажется базовым, и языки расширяют его, поэтому тип может быть напечатан на машинке и содержит свойство типа tsconfig.К сожалению, я не нашел синтаксис для машинописи.

В итоге я создал такие задачи оболочки:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "ttsc: watch",
            "type": "shell",
            "windows": {
                "command": "node_modules\\.bin\\ttsc.cmd",
                "args": [
                    "--watch", "-p", "tsconfig.json"
                ],
            },
            "problemMatcher": [
                "$tsc-watch"
            ]
        },
        {
            "label": "ttsc: build",
            "type": "shell",
            "windows": {
                "command": "node_modules\\.bin\\ttsc.cmd",
                "args": [
                    "-p", "tsconfig.json"
                ],
            },
            "problemMatcher": [
                "$tsc"
            ]
        }
    ]
}
...