typescript - VSCode-utvidelse: Hvordan feilsøke "Aktivering av utvidelsen 'undefined_publisher.extension-name' mislyktes: Uventet token {."
Jeg har laget en VSCode-utvidelse ved hjelp av TypeScript. Vanligvis ville jeg redusert problemet til den minste mulige kodebiten, men hver gang jeg prøver å gjøre det, forsvinner problemet.
Hver gang jeg prøver å kjøre utvidelsen (ved å trykke Ctrl+Shift+P og velge kommandoen til utvidelsen min), får jeg feilen: (navn endret)
Activating extension 'undefined_publisher.extension-name' failed: Unexpected token {.
Eller, i tidligere versjoner av koden da jeg først støtte på feilen, ...Uventet symbol ,.
Feilen gir ingen indikasjon på hvilken linje eller til og med hvilken fil som inneholder det uventede tegnet. Jeg har prøvd å kjøre feilsøkeren på koden som laster utvidelsen (vscode devtools), men jeg kunne ikke finne noen åpenbar «nåværende fil» eller noe slikt i anropsstakken.
Hvordan skal jeg i det hele tatt begynne å feilsøke dette?
package.json: (navn endret)
{
"name": "extension-name",
"displayName": "Extension Name",
"description": "Extension Descripton",
"version": "0.0.1",
"engines": {
"vscode": "^1.41.0"
},
"categories": [
"Other"
],
"activationEvents": [
"onCommand:extension-name.start"
],
"main": "./out/extension.js",
"contributes": {
"commands": [
{
"command": "extension-name.start",
"title": "Open a Extension Name window"
}
]
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"pretest": "npm run compile",
"test": "node ./out/test/runTest.js"
},
"devDependencies": {
"@types/glob": "^7.1.1",
"@types/mocha": "^5.2.7",
"@types/node": "^12.11.7",
"@types/vscode": "^1.41.0",
"awesome-typescript-loader": "^5.2.1",
"glob": "^7.1.5",
"html-loader": "^0.5.5",
"mocha": "^6.2.2",
"tslint": "^5.20.0",
"typescript": "^3.6.4",
"vscode-test": "^1.2.2",
"webpack": "^4.41.2",
"webpack-cli": "^3.3.9"
},
"dependencies": {
"cerialize": "^0.1.18",
"ts_common": "file:../ts_common"
},
"private": true
}
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"target": "es2016",
"outDir": "out",
"lib": [
"es2018",
"dom"
],
"sourceMap": true,
//"rootDir": "src",
"typeRoots": ["node_modules/@types"],
"strict": true, /* enable all strict type-checking options */
/* Additional Checks */
"noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
"noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
// "noUnusedParameters": true, /* Report errors on unused parameters. */
},
"awesomeTypescriptLoaderOptions": {
"useCache": true,
"isolatedModules": true,
//"transpileOnly": true, // This is about a 2x speedup to compilation but disable type errors/warnings
"reportFiles": [
"src/**/*.{ts,tsx}"
]
},
"include": [
"./src/"
]/*,
"exclude": [
"node_modules",
"../ts_common",
"./dist",
".vscode-test"
]*/
}
Svar #1
Det samme med deg. Jeg prøvde å omgi den problematiske uttalelsen med try, men ingenting ble fanget.
Etter litt undersøkelse fant jeg ut at det skyldes valgfri kjedingssyntaks i kildekoden min, så innså jeg at prosjektet mitt ble initialisert før ts 3.7 kom, så det støttes ikke. Å sjekke kompilatorens output i Terminal-vinduet bekreftet dette. (Jeg la ikke merke til det fordi nåværende vscode leveres med ts 3.7, så ingen feil markeres i kildekoden.) Feilen er ikke under programkjøring. Det er en syntaksfeil under kompilering. Sjekk det.
Svar #2
Jeg klarte å løse problemet mitt ved å endre target-alternativet i tsconfig.json fra es2016 til es5. Jeg prøvde ikke noen andre; es6/es2015 kan også fungere.
Jeg fant dette ved å endre koden min mer eller mindre tilfeldig til jeg fikk en feil som unexpected token "export", på det tidspunktet mistenkte jeg målversjonen.