Фон
Я новичок в коде 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.Я просто добавил свойства команды / типа.(См. Файл в конце для справки)
Бонус для других пользователей:
это может быть потому, что вы используете 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" ]
}