警告:找不到父级tsconfig.json文件

18

我希望修复以下警告:

警告:无法找到父级 tsconfig.json

在 TypeScript 的 Errors 标签下,在 IntelliJ IDEA 2016.3 中。我的 TypeScript 代码位于 src 目录中,输出的 TypeScript 文件按预期存储在 lib 目录中,而没有将 src 文件夹添加到 lib 中。

我在其他项目中使用 lib 文件夹,并且似乎都正常工作。因此,这似乎并不是一个大问题,但是我偶尔会遇到 TSLint 的问题,有时它似乎无法识别一个 .tsx 文件是 JSX 并错误地进行了 Linting,偶尔会将其视为普通的 .ts 文件。最终,它似乎会解决这个问题。我想知道这是否与我的 TSLint 设置有关,因为我的 TSLint 设置配置为使用 tsconfig.json

我以前还曾经发现过 .js 转换文件出现在 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
  }
}
4个回答

22
尝试在文件tsconfig.json中设置include部分,就像下面的图片一样。
(注意,我的项目根目录是frontend,我的include部分是frontend/**/*
当然,您不需要将项目的根文件夹重命名为frontend
只需命名相同即可。 保存tsconfig.json并打开.ts.tsx文件后,它应立即生效。如果没有,请尝试重新启动WebStorm/IDEA
在测试此解决方案之前,请不要忘记清除error控制台。它可能会缓存先前的消息。 附言:我正在使用WebStorm 2016.3.1

enter image description here


如果您正在使用ts-loaderwebpack一起使用,上述解决方案将导致构建失败。如果是这种情况,请考虑使用以下方法。

enter image description here


我不确定这与我在include中使用的src有何不同。 - RationalDev likes GoFundMonica
哇,那么更改包含就解决了。第二部分是不必要的(在2016.3.3中)。还注意到如果我包括 src/**/*.tstest/**/*.ts ,它也可以工作。我怀疑问题的根源在于 dist 文件夹中的文件夹结构。如果你只包含 src/**/*.tsdist/ 将只包含 src 文件夹的 js 输出。然而,如果你包含整个项目文件夹,dist 将有一个 src 和一个 test 子文件夹。 - Cristian Vrabie
那么你的意思是说,如果我正在使用ts-loader,我应该更改WebStorm TypeScript编译器选项..?为此,我需要启用WebStorm编译器,但我不想使用WebStorm进行编译。我想使用ts-loader进行编译... - Duncan Lukkenaer
Webstorm不会将ts编译为js,除非您通过按下某些按钮或右键单击并选择来明确告诉它这样做。我不知道是否有选项可以在保存时自动进行编译,但如果您遇到了这种情况,可以搜索一下如何关闭它。我已经勾选了复选框,并从未遇到“保存时编译”的情况。但是为了100%确定,您应该使用svn、git或mercurial来备份。 - Cù Đức Hiếu
很高兴看到这篇文章在21年11月仍然有参考价值。我曾经担心这篇文章已经过时了。这也解决了我的问题。在ng init过程中,这个设置现在会被设置在tsconfig.json文件中吗? - Rostasan

8
问题是特定于使用的TypeScript版本(2.1.x); 它在2016.3.2 EAP中得到了修复。
注意:此答案涉及到IDE(WebStorm,PHPStorm,IDEA)版本2016.3特定的问题:它与TypeScript 2.1.x不兼容,显示错误警告。如果您在其他IDE版本中看到类似的消息(无法找到父tsconfig.json),那么这可能是您的配置问题:如果当前编辑的.ts文件未包含在任何tsconfig.json中,则会显示此类消息。

2
仍然存在于2016.3.3。 - Cristian Vrabie
2
WebStorm 2017.1.4,仍然存在。 - Lin Du
phpstorm 2017.2.1仍然存在。 - Juan Carlos Conde
1
请查看更新的答案。您的问题明显不同,很可能是由于您的配置引起的。 - lena
2
刚从PhpStorm 2017.2升级到2017.3后遇到了这个问题,正在调查中... - Pavel
显示剩余6条评论

4

以上解决方案对我都没有起作用,但是我找到了一个tsconfig的修改能够生效。看起来IDE使用的规则与tsc不同。

以下方式无法解决问题:

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

这是有效的:

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

1
尝试将“版本号”设置为您的 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
    }
}

我刚刚尝试了那个,但不幸的是它似乎不起作用。 - RationalDev likes GoFundMonica
今天我遇到了一个同样的问题,我的Angular2项目在升级到TypeScript 2.1.4之后。我删除了安装/设置期间生成的所有文件夹和文件。然后我重新安装了它,我的设置会为我安装文件夹,如:typings、node_modules、ce_sources和tmp。也许你需要从你的设置中删除所有生成的文件夹和文件,因为一些旧的或错误的文件仍然存在。希望这能帮助你。 - Peter Panek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接