Расширение VSCode: как отладить «Ошибка активации расширения« undefined_publisher.extension-name »: неожиданный токен {.» - PullRequest
0 голосов
/ 14 февраля 2020

Я создал расширение vscode, используя машинописный текст. Обычно я бы уменьшал проблему до наименьшего возможного куска кода, но всякий раз, когда я пытаюсь это сделать, проблема исчезает.

Всякий раз, когда я пытаюсь запустить расширение (нажав Ctrl + Shift + P и выбрав команду моего расширения), я получаю сообщение об ошибке: (имя изменено)

Activating extension 'undefined_publisher.extension-name' failed: Unexpected token {.

Или, в предыдущих версиях кода, когда я впервые столкнулся с ошибкой, ... Unexpected token ,.

Ошибка не указывает, какая строка или даже какой файл содержит неожиданный токен. Я попытался запустить отладчик для кода, который загружает расширение (vscode devtools), но я не смог найти какой-либо очевидный «текущий файл» или что-то подобное в стеке вызовов.

Как мне вообще начать отладить это?

package.json: (имя изменено)

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

Ответы [ 3 ]

0 голосов
/ 18 февраля 2020

Так же и с тобой. Я попытался окружить проблематичный оператор c try, но ничего не было поймано.

После некоторого изучения я обнаружил, что это вызвано необязательным синтаксисом цепочки в моем исходном коде, затем я понял, что мой проект инициализируется до ts 3.7 прибыл, так что не поддерживается. Проверка вывода компилятора в окне Terminal подтвердила это. (Я не заметил этого, потому что текущий vscode поставляется с ts 3.7, поэтому в исходном коде ошибка не выделяется.) Ошибка не в выполнении программы. Это синтаксическая ошибка во время компиляции. Проверьте это.

0 голосов
/ 18 февраля 2020

Мне удалось решить мою проблему, изменив параметр target в tsconfig.json с es2016 на es5. Я не пробовал никаких других; es6 / es2015 также может работать.

Я обнаружил это, меняя свой код в основном случайным образом, пока не получил ошибку типа unexpected token "export", и в этот момент я заподозрил целевую версию.

0 голосов
/ 14 февраля 2020

Используете ли вы "экспорт" во встроенном скрипте?

От: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export Вы не можете этого сделать.

...