背景
我是nodejs / typescript / VisualStudio代码的新手,并试图使用express&sequelize-typescript创建一个小项目。 我从Visual Studio(无代码)开始了该项目,但是遇到了很多错误或显示错误的问题,因此我切换到了Visual Studio Code。 我不再确定Visual Studio(不是代码)是自己安装了nodejs还是/和是否安装了另外一个。但是我知道我在PATH变量中有一个npm。
ts-nameof
然后在此项目中,我需要执行查询以按顺序排序,因此,我没有发现ts-nameof。而是使用硬编码列名或使用safetype字符串名称(我讨厌字符串!)。
所以我按照指示进行操作:
当事情变糟
tsconfig.json“文件”属性中的“ node_modules / ts-nameof / ts-nameof.d.ts”
。是的,它有效!
ReferenceError:未定义nameof
但是运行时不喜欢它...
其他用户的奖励:
如果看到错误
终端进程终止,退出代码:2
可能是因为您使用的是仅适用于linux / osx的nodes_modules / npm / ttsc(我不知道它是否可以在带有Linux嵌入式系统的Windows 10上运行)
针对您的任务
顺便说一句:该文件还有其他问题,请参阅注释底部的task.json ...
问题/问题
我在使用Visual Studio(不是代码)上搜索Typescript / nodejs时遇到了问题,因为每个人都在使用Visual Studio代码...因此,我这方面肯定有问题。
也许使用ts-nameof之外的其他方法(这使我使用ttypescript)是一个更好的主意?如果这不是一个好选择,您会推荐我什么。
我仍然必须弄清楚如何配置“监视”任务运行以及如何在task.json中包含2个任务...
请继续阅读我遇到的其他问题,例如“ 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 Code似乎与此文件不符,从文档中我应该能够在“任务”对象中使用命令/类型(并且我认为是“ Windows”),但不能让我失望。
另外,当使用此文件运行任务时,Visual Studio Code要求我提供问题匹配器,并将此属性添加到task.json的根目录。
编辑:我确实也尝试在各处填充命令/类型属性(在根目录中,在我的所有任务中,以及在“窗口”中(在根目录中,以及在我的所有任务中) )。
.vscode / settings.json (工作区)
{
"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" ]
}
答案 0 :(得分:0)
我仍然不知道发生了什么,但是我读到的tasks.json syntax似乎是基本的,语言对其进行了扩展,因此为什么类型可以通过打字稿来包含并包含tsconfig之类的属性。不幸的是,我没有找到打字稿的语法。
我最终像这样创建了shell任务:
{
// 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"
]
}
]
}