модульные тесты SyntaxError: неожиданный токен { - PullRequest
0 голосов
/ 07 октября 2019

Я получаю эту ошибку:

D:\nginx\ibdrweb\webapps\ibdr-document-2\doc-app\sources\forms\dynamic-form\lus\lus.js:1
import { Tools } from "@ShareUtils/tools";
       ^

SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:721:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)

когда я пытаюсь выполнить следующую команду:

ts-mocha -p doc-app/tests/tsconfig.json doc-app/tests/lus-tests.ts

Эта проблема обсуждалась здесь https://github.com/Microsoft/TypeScript/issues/26018 и была закрыта. Попытка изменить "module": "commonjs" в tsconfig.json не помогает. Многие люди писали, что проблема все еще актуальна .

Мой проект выглядит следующим образом

|- doc-app
|    |- < many direcotiries used at tests.ts >
|    |- tests
|          lus-tests.ts
|          tsconfig.json
|
|- node_modules
|- tsconfig.json

Примечание: узел "v10.16.0"

tsconfig.json в каталоге тестов

{
  "compilerOptions": {
    "target": "es5",
    "declaration": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true,
    "lib": ["es6", "dom"],
    "typeRoots": [
      "node_modules/@types"
    ]
 },
 "awesomeTypescriptLoaderOptions": {
   "useWebpackText": true,
    "useTranspileModule": true,
    "doTypeCheck": true,
    "forkChecker": true
 },
 "include": [
   "./"
 ],
 "exclude": [
   "node_modules"
 ]
}

полезная часть package.json

"devDependencies": {
  "@types/chai": "4.1.7",
  "@types/mocha": "5.2.7",
  "@types/sinon": "7.0.13",
  ...
  "chai": "4.2.0",
  ...
  "mocha": "6.1.4",
  ...
  "sinon": "7.3.2",
  ...
  "ts-mocha": "6.0.0",
  "ts-node": "8.4.1",
  "typescript": "2.9.2", //if change it to "3.6.3" it dosen't help
}

Если я укажу "module": "exnext" в tsconfig.json, тогда ошибка:

D:\nginx\ibdrweb\webapps\ibdr-document-2\doc-app\tests\lus-tests.ts:1
import "mocha";
       ^^^^^^^

SyntaxError: Unexpected string
    at Module._compile (internal/modules/cjs/loader.js:721:23)

Примечание: import {Tools} из "@ ShareUtils / tools";Модуль "Инструменты" в node_modules

1 Ответ

1 голос
/ 10 октября 2019

Первая ошибка вызвана тем, что ваш JavaScript не компилируется с помощью TypeScript. Вам нужно будет allowJs, чтобы этот файл работал как положено. Вторая ошибка имеет смысл, node.js не поймет код вашего модуля ES, когда вы изменяете вывод модуля из CommonJS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...