TypeScript tsc ничего не отвечает

Я новичок в TypeScript.

Я работал над переносом своего собственного проекта React.js, написанного на JS, на TypeScript.
Я исправил все ошибки, а также проверил, что он хорошо работает на npm start.
Но когда я попытался скомпилировать с помощью tsc, он никогда не работает и никогда не показывает никаких журналов.
но, как видите, tsc -v работает.

введите здесь описание изображения

Я пробовал Ctrl+Shift+B в VSCode, но результат тот же, ничего.

введите здесь описание изображения

в моем tsconfig.json я только что добавил outDir в автоматически сгенерированный tsconfig.json.

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react",
    "outDir": "./dist"
  },
  "include": [
    "./src/*"
  ]
}

Можно ли как-то это исправить?
Заранее спасибо.


person Prunus Nira    schedule 09.11.2019    source источник
comment
Вы проверяли папку «dist», есть ли файлы js? Компилятор может завершиться молча без каких-либо выходных данных. Попробуйте запустить его с опцией --extendedDiagnostics.   -  person Michal    schedule 09.11.2019
comment
@Michal Да, я проверил dist. файлы не существуют. --extendedDiagnostics показывает 283 файла и 92063 строки... но idk это правильное число   -  person Prunus Nira    schedule 09.11.2019
comment
Похоже, проблема здесь в опции компилятора noEmit. Установите для него значение false или удалите его, так как его значение по умолчанию равно false.   -  person Michal    schedule 09.11.2019
comment
@ Михал, о, спасибо. Это сработало. Пожалуйста, добавьте свой комментарий в качестве ответа. Я проверю это как правильный ответ. Я не понимаю, почему команда CRA сделала noEmit: true по умолчанию...   -  person Prunus Nira    schedule 09.11.2019
comment
@ Михал Ах .. Я также обнаружил, что npm run build работает только тогда, когда noEmit: true ...   -  person Prunus Nira    schedule 09.11.2019


Ответы (1)


Если бы приложение было создано с использованием скрипта CRA, я бы придерживался уже существующей команды скрипта build (npm run build), определенной в package.json.

В этом случае tsc используется только для проверки типов, поэтому noEmit имеет значение true. Команда build выполняет скрипт react-scripts build, который за кулисами использует Webpack для загрузки и компиляции машинописного текста в javascript.

person Michal    schedule 10.11.2019