/ / Versão de texto de tipo incorreta do código do VisualStudio em tempo de execução - node.js, typescript, visual-studio-code, typescript 1.8

Código VisualStudio Versão TypeScript incorreta no tempo de execução - node.js, texto datilografado, código de estúdio visual, texto datilografado

Recentemente, atualizei para o VSCode 1.6.1 e ele mudou de Typescript 1.8.10 para 2.0.3, o que fez meu projeto parar de funcionar.

Os métodos Reflect mudaram, então agora Routing-Controllers está gerando o seguinte erro ao tentar obter os atributos de um método:

TypeError: Reflect.getMetadata is not a function
at exports.Body (C:FNFantasyNationStormbringernode_modulesrouting-contr
ollersdecoratorparams.js:155:30)
at __param (C:FNFantasyNationStormbringerScriptscontrollersUserControl
ler.js:12:37)
at __decorate (C:FNFantasyNationStormbringerScriptscontrollersUserCont
roller.js:5:110)
at Object.<anonymous> (C:FNFantasyNationStormbringerScriptscontrollers
UserController.js:56:1)

Seguindo as instruções nas notas de versão para voltar para uma versão específica em meu espaço de trabalho, instalei o texto datilografado antigo no espaço de trabalho:

npm install typescript@1.8.10

Ao reabrir o VSCode, não me perguntou sobre a versão do TS a ser usada, então atualizei manualmente meu espaço de trabalho "settings.json" para especificá-lo:

{
"files.exclude": {
"**/*.js.map": true,
"**/*.js": {"when": "$(basename).ts"}
},
"editor.stablePeek": true,
"typescript.tsdk": "node_modules/typescript/lib"
}

Quando abro um arquivo ".ts", o VSCode mostra a versão correta:

insira a descrição da imagem aqui

Mas depois de reconstruir (ctrl + shift + B) e executá-lo novamente (F5), ainda estou recebendo exatamente o mesmo erro.

Meu tsconfig é:

{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"noImplicitAny": false,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"inlineSourceMap": true,
"watch": false
},
"exclude": [
"node_modules"
]
}

E minhas configurações de inicialização são:

{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/app.js",
"stopOnEntry": false,
"args": [],
"cwd": "${workspaceRoot}",
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"externalConsole": true,
"sourceMaps": true,
"outDir": null
},
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5959
}
]
}

Estou faltando alguma coisa?

Respostas:

0 para resposta № 1

Bem, foi uma fusão que bagunçou o código e mudou a ordem de importação.

import "reflect-metadata";

Deve ser a primeira importação a fazer com que os controladores de roteamento funcionem