«SyntaxError: Невозможно использовать оператор импорта вне модуля» при попытке отладки программы TypeScript на VSCode - PullRequest
0 голосов
/ 26 апреля 2020

Я делаю проект для университета на TypeScript и пытаюсь отладить vscode при выполнении теста с использованием Mocha. Я использую следующий запуск. json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Mocha Tests",
            "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
            "args": [
                "-u",
                "tdd",
                "--timeout",
                "999999",
                "--colors",
                "${workspaceFolder}/test/*.test.ts"
            ],
            "internalConsoleOptions": "openOnSessionStart",
            "skipFiles": [
                "<node_internals>/**"
            ]
        },
    ]
}

Когда я запускаю эту конфигурацию, я получаю ошибку:

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:1063:16)
    at Module._compile (internal/modules/cjs/loader.js:1111:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:996:32)
    at Function.Module._load (internal/modules/cjs/loader.js:896:14)
    at Module.require (internal/modules/cjs/loader.js:1036:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\lib\mocha.js:334:36
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\lib\mocha.js:331:14)
    at Mocha.run (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\lib\mocha.js:809:10)
    at Object.exports.singleRun (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\lib\cli\run-helpers.js:108:16)
    at exports.runMocha (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\lib\cli\run-helpers.js:142:13)
    at Object.exports.handler (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\lib\cli\run.js:292:3)
    at Object.runCommand (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\yargs\lib\command.js:242:26)
    at Object.parseArgs [as _parseArgs] (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\yargs\yargs.js:1096:28)
    at Object.parse (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\yargs\yargs.js:575:25)
    at Object.exports.main (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\lib\cli\cli.js:68:6)
    at Object.<anonymous> (c:\Users\owner\Documents\PPL\PPL-Assignment2\node_modules\mocha\bin\_mocha:10:23)
    at Module._compile (internal/modules/cjs/loader.js:1144:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:996:32)
    at Function.Module._load (internal/modules/cjs/loader.js:896:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

Тест, который я пытаюсь запустить первым, называется q2-tests.test.ts и имеет следующие импорты:

import fs from "fs";
import { expect } from 'chai';
import { evalL3program } from '../imp/L3-eval';
import { Value } from "../imp/L3-value";
import { Result, bind, makeOk } from "../imp/result";
import { parseL3 } from "../imp/L3-ast";

Импорт работает просто отлично, когда работает без отладки, и когда я запускаю npm test, проблем нет.

Кажется, это файл, вызывающий проблему, но, похоже, он не указывает c, а, как правило, проблему с запуском импорта. Я попытался изменить импорт файла, и он просто выдает эту ошибку для первого импортируемого файла.

Я очень плохо знаком с обоими этими инструментами (TypeScript \ JavaScript и Mocha), и я ' Я, вероятно, не в своей тарелке, поэтому предоставленная мною информация может отсутствовать или может быть слишком большой, я просто не знаю, где искать проблему. Если тебе нужно что-то еще, просто скажи мне. Кроме того, поскольку я новичок, мы будем благодарны за ссылку на правильное место, где можно найти ответ и лучше понять проблему, а также за ответ, и я просто хочу извлечь уроки из этого.

1 Ответ

0 голосов
/ 26 апреля 2020

Оказывается, я использовал неправильную конфигурацию запуска. Эта страница очень помогла: https://github.com/microsoft/vscode-recipes/tree/master/debugging-mocha-tests. Правильные конфигурации были:

{
    "type": "node",
    "request": "launch",
    "name": "Mocha All",
    "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
    "args": [
        "--timeout",
        "999999",
        "--colors",
        "--require",
        "ts-node/register",
        "test/**/*.ts",
    ],
    "console": "integratedTerminal",
    "internalConsoleOptions": "neverOpen"
}
...