"exclude" 属性 of tsconfig.json 未被尊重

"exclude" property of tsconfig.json is not being respected

我正在使用 Express/Node/Typescript 找到的优秀示例代码 here。它使用 run.sh:

中的以下命令转译 .ts 代码

./node_modules/.bin/tsc --sourcemap --module commonjs ./bin/www.ts

这与广告宣传的一样,但我更愿意使用 tsconfig.json 文件和 tsc -p . 但是,当我 运行 该命令时,我得到了一堆 TS2300: Duplicate identifier 'foo' errorstsc(错误地?)尝试遍历 ./node_modules./typings 目录时。下面是我正在使用的tsconfig.json:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
    "typings"
  ]
}

有什么想法吗?我正在使用 tsc 1.7.3 FWIW。

我做到了:

git clone https://github.com/czechboy0/Express-4x-Typescript-Sample.git
cd Express-4x-Typescript-Sample/
./run.sh
tsd install  # I don't know why, but this helped me.
./run.sh

我创建了 Express-4x-Typescript-Sample/tsconfig.json 文件,内容为

{
  "compilerOptions": {
    "target": "ES5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
    "typings"
  ]
} 

我运行

[...]/Express-4x-Typescript-Sample$ tsc -p .

它对我有用 - 即没有错误。

我刚刚遇到了同样的问题。把我的头发拉出来大约 30 分钟然后发现如果我改变:

"target": "ES5",

"target": "ES6",

所有错误都消失了!

我遇到了这个问题,我的 exclude 看起来像这样:

"exclude": [
  "node_modules",
  "typings"
]

当我删除 "typings" 时,它起作用了。我的最终解决方案:

"exclude": [
  "node_modules"
]

04/02/0217(4 月 2 日)- 我正在经历同样的事情,几乎花了整个周末。最后我找到了这个网站(我从未见过任何 Whosebug post 的链接):https://angular.io/docs/ts/latest/guide/typescript-configuration.html

在其中,我在 compilerOptions 中找到了这一行:

"lib": [ "es2015", "dom" ]

我不知道它的作用,此时我不在乎,但是我所有的 node_modules 错误都消失了。

至于 include/exclude 不工作,我相信这是因为 "dependencies." 即使你排除了一个文件夹,如果一个导入的文件(比如 Component 或 NgModule)对某个文件有一些依赖node_modules,tsc 将尝试编译该文件。

同样,我在 node_modules 排除方面遇到了问题。

这是一个粗暴的解决方案,它会忽略所有 *.d.ts 个文件。

我添加到compilerOptions

"compilerOptions": {
    "skipLibCheck": true,
    ...
 }

相关:

我发现在要排除的目录之前添加两个星号和一个斜杠 (**/) 解决了问题:

{
...
  "exclude": [
    "**/node_modules",
    "**/typings"
  ]
...
}```

Typescript 将提取作为项目一部分的文件中 import 语句引用的任何路径。

如果您发现正在处理您已“排除”的文件,请检查其他代码中对它们的引用。

好的,如果您已经尝试了所有其他方法,请检查您的代码库中是否没有导致“排除”代码的导入语句。如果您在从(例如)“compiled-src”导入文件的 Typescript 范围中包含一个文件,那么所有导入的文件都会突然包含在内。这可能会产生多米诺骨牌效应,使排除 属性 看起来没有受到尊重。

具体来说,我使用 intellisense 从我的代码库中自动导入一些东西,并且 intellisense 决定它更喜欢 compiled-src 中的文件而不是 typescript 文件。我没有注意到,过了很长时间才意识到发生了什么。

我确实看到这是很久以前的事了,而且你已经接受了一个答案,但我想补充以下内容,记录在案 here:

"重要提示: exclude only 更改由于 include 设置而包含的文件。"

由于您的 tsconfig 中没有 include 设置,因此 exclude 设置将无效。