/ / Versione del dattiloscritto errata del codice VisualStudio in Runtime - node.js, typescript, visual-studio-code, typescript1.8

Codice VisualStudio errato Versione dattiloscritta in Runtime - node.js, dattiloscritto, visual-studio-code, typescript1.8

Di recente ho aggiornato a VSCode 1.6.1 e sono passato da Typescript 1.8.10 a 2.0.3, il che ha impedito al mio progetto di funzionare.

I metodi Reflect sono cambiati, quindi ora Routing-Controller lancia il seguente errore quando si tenta di ottenere gli attributi di un metodo:

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)

Seguendo le istruzioni sulle note di rilascio per tornare a una versione specifica nel mio spazio di lavoro, ho installato il vecchio dattiloscritto nell'area di lavoro:

npm install typescript@1.8.10

Alla riapertura VSCode non mi ha chiesto informazioni sulla versione di TS da utilizzare, quindi ho aggiornato manualmente il mio spazio di lavoro "settings.json" per specificarlo:

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

Quando apro un file ".ts" VSCode mostra la versione corretta:

inserisci la descrizione dell'immagine qui

Ma dopo aver ricostruito (ctrl + shift + B) e averlo eseguito di nuovo (F5) ricevo ancora lo stesso identico errore.

Il mio tsconfig è:

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

E le mie impostazioni di avvio sono:

{
"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
}
]
}

Mi sto perdendo qualcosa?

risposte:

0 per risposta № 1

Bene, è stata un'unione che ha incasinato il codice e ha spostato l'ordine di importazione.

import "reflect-metadata";

Dovrebbe essere la prima importazione per far funzionare i controller di routing