Предупреждение: не удается найти родительский файл tsconfig.json.

Я хотел бы исправить предупреждение:

Предупреждение: не удается найти родительский файл tsconfig.json.

на вкладке TypeScript Errors в IntelliJ IDEA 2016.3. Мой код TypeScript живет в каталоге src, и мой вывод TypeScript будет lib, как и ожидалось, без добавления папки src в lib.

Я использую папку lib в других проектах, и, похоже, она работает так, как ожидалось. Так что это не кажется большой проблемой, но иногда у меня возникают проблемы с TSLint, когда иногда кажется, что он не подбирает файл .tsx, это JSX, неправильно анализирует и, кажется, иногда обрабатывает его как обычный файл .ts. В конце концов, кажется, разобрался. Мне интересно, связано ли это с тем, что мои настройки TSLint настроены на использование tsconfig.json.

У меня также ранее были перенесенные файлы .js, которые появлялись рядом с файлами .ts в папке src, но не с тех пор, как я недавно изменил свой tsconfig.json.

Файлы следующим образом:

tsconfig.json
src/index.ts
lib/index.js
lib/index.d.ts

Я обновился до TypeScript 2.1.4, но видел его с 2.0.10.

Мой файл tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "jsx": "react",
    "allowJs": false,
    "isolatedModules": false,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "declaration": true,
    "noImplicitAny": false,
    "noImplicitUseStrict": true,
    "noEmitHelpers": false,
    "removeComments": true,
    "noLib": false,
    "sourceMap": true,
    "inlineSources": true,
    "preserveConstEnums": true,
    "allowSyntheticDefaultImports": true,
    "suppressImplicitAnyIndexErrors": true,
    "rootDir": "./src",
    "outDir": "./lib"
  },
  "include": [
    "./src/**/*"
  ],
  "compileOnSave": true,
  "atom": {
    "rewriteTsconfig": false
  }
}

person RationalDev likes GoFundMonica    schedule 10.12.2016    source источник


Ответы (4)


проблема связана с используемой версией TypeScript (2.1.x); это исправлено в 2016.3. 2 раз в неделю

Примечание: этот ответ относится к проблеме, характерной для IDE (WebStorm, PHPStorm, IDEA) версии 2016.3: он не работал с TypeScript 2.1.x, показывая ложные предупреждения. Если вы видите подобное сообщение (Cannot find parent tsconfig.json) в других версиях IDE, скорее всего, проблема в вашей конфигурации: такие сообщения отображаются, если редактируемый в данный момент .ts файл не включен ни в один tsconfig.json.

person lena    schedule 13.12.2016
comment
Все еще там в 2016.3.3 - person Cristian Vrabie; 02.02.2017
comment
должно быть другое дело. убедитесь, что ваш файл включен в ваш tsconfig.json - person lena; 02.02.2017
comment
WebStorm 2017.1.4, все еще там - person slideshowp2; 06.07.2017
comment
phpstorm 2017.2.1 все еще там - person Juan Carlos Conde; 30.08.2017
comment
см. обновленный ответ. Ваша проблема явно отличается и, вероятно, вызвана вашей конфигурацией. - person lena; 30.08.2017
comment
Только что получил эту проблему после обновления с PhpStorm 2017.2 до 2017.3, исследуя... - person Pavel; 30.11.2017
comment
Upd: Мне помогла инвалидация кешей/перезагрузка. - person Pavel; 30.11.2017
comment
Все еще там в 2017.3 - недействительный кеш / перезапуск не имел для меня значения. - person kross; 13.12.2017
comment
Все еще есть в PhpStorm 2017.3.2, использующем TypeScript 2.7.1. - person TheFox; 16.02.2018
comment
пожалуйста, смотрите мои комментарии/ответ выше - ваша проблема отличается. - person lena; 16.02.2018
comment
Я вижу в 2018.2.5 - person Totty.js; 02.11.2018

Попробуйте настроить раздел include в файле tsconfig.json, как показано на изображении ниже.
(Обратите внимание, что корневая папка моего проекта — frontend, а раздел includefrontend/**/*)< /эм>.

Конечно, вам не нужно переименовывать корневую папку вашего проекта в frontend.
Должно совпадать только название.

Это должно вступить в силу сразу после того, как вы сохраните файл tsconfig.json и откроете файл .ts или .tsx. Если он не попытается перезапустить WebStorm/IDEA.

И не забудьте очистить консоль error перед тестированием этого решения. Предыдущие сообщения могут кэшироваться.

P/S: я использую WebStorm 2016.3.1.

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


Если бы вы использовали webpack вместе с ts-loader, приведенное выше решение привело бы к сбою ваших сборок. Если это так, рассмотрите этот подход.

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

person Cù Đức Hiếu    schedule 11.12.2016
comment
Я не уверен, чем это отличается от того, что я указал, поскольку я использую src в include - person RationalDev likes GoFundMonica; 17.12.2016
comment
Ничего себе, так что изменение включения решает это. Вторая часть не нужна (в 2016.3.3). Также заметил, что это работает, если я включаю src/**/*.ts и test/**/*.ts. Подозреваю, что в основе этого лежит структура папок в папке dist. Если вы включите только src/**/*.ts, dist/ будет содержать вывод js только из папки src. Однако, если вы включите всю папку проекта, dist будет иметь подпапки src и test. - person Cristian Vrabie; 03.02.2017
comment
Итак, вы говорите, что если я использую ts-loader, я должен изменить параметры компилятора WebStorm TypeScript..? Для этого мне нужно включить компилятор WebStorm, а компилировать с помощью WebStorm я не хочу. Я хочу скомпилировать с помощью ts-loader.... - person Duncan Luk; 13.03.2017
comment
Webstorm не будет компилировать ts в js, если вы явно не скажете ему сделать это, нажав несколько кнопок или щелкнув правой кнопкой мыши и выбрав. Я не знаю, есть ли возможность автоматически выполнять компиляцию при сохранении, но если вы столкнетесь с этим, вы можете отключить ее в Google. Я установил этот флажок и никогда не сталкивался с компиляцией при сохранении. Но чтобы быть на 100% уверенным, вы должны использовать svn, git или mercurial для резервного копирования. - person Cù Đức Hiếu; 14.03.2017

Ни одно из вышеперечисленных решений не сработало для меня, но я наткнулся на изменение tsconfig, которое сработало. Похоже, что IDE использует другие правила, чем tsc.

Это НЕ сработало:

"include": ["./typings", "./src", "./test"],

Это сработало:

"include": ["./typings/**/*", "./src/**/*", "./test/**/*"],
person kross    schedule 12.12.2017

Попробуйте установить «номер версии» в файле tsconfig.json.

{
    "version": "2.1.4",
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "jsx": "react",
        "allowJs": false,
        "isolatedModules": false,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "declaration": true,
        "noImplicitAny": false,
        "noImplicitUseStrict": true,
        "noEmitHelpers": false,
        "removeComments": true,
        "noLib": false,
        "sourceMap": true,
        "inlineSources": true,
        "preserveConstEnums": true,
        "allowSyntheticDefaultImports": true,
        "suppressImplicitAnyIndexErrors": true,
        "rootDir": "./src",
        "outDir": "./lib"
    },
    "include": [
        "./src/**/*"
    ],
    "compileOnSave": true,
    "atom": {
        "rewriteTsconfig": false
    }
}
person Peter Panek    schedule 10.12.2016
comment
Я попробовал это только сейчас, но, к сожалению, это не работает. - person RationalDev likes GoFundMonica; 10.12.2016
comment
Сегодня у меня есть проект Angular2 с той же проблемой, после обновления до TypeScript 2.1.4 я удалил все папки и файлы, которые были созданы во время установки/настройки проекта. Затем я снова установил его, моя установка устанавливает такие папки, как: typings, node_modules, ce_sources и tmp для меня. Возможно, вам нужно удалить все сгенерированные папки и файлы из вашей установки, потому что там остались старые или неправильные файлы. Надеюсь, это поможет вам - person Peter Panek; 11.12.2016