tsconfig.json的“exclude”属性未受到尊重

时间:2015-12-16 12:36:15

标签: node.js typescript tsd

我正在使用找到here的优秀Express / Node / Typescript示例代码。它使用run.sh中的以下命令转换.ts代码:

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

这可以像宣传的那样工作,但我更喜欢使用tsconfig.json文件和tsc -p .但是,当我运行该命令时,TS2300: Duplicate identifier 'foo' errors({1}}错误地获得了tsc ?)尝试遍历./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。

8 个答案:

答案 0 :(得分:4)

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

我已添加到compilerOptions

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

答案 1 :(得分:3)

我做了:

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 .

它起作用了 - 即没有错误。

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

我遇到了同样的问题。把头发拉出约30分钟,然后发现如果我换了:

"target": "ES5",

"target": "ES6",

所有错误都消失了!

任何人都知道为什么?!?

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

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

当我删除"typings"时,它有效。我的最终解决方案:

"exclude": [
  "node_modules"
]

答案 6 :(得分:0)

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

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

答案 7 :(得分:-3)

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

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

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

我不知道它做了什么,此时我并不在乎,但我的所有node_modules错误都消失了。

至于包含/排除不起作用,我认为这是因为"依赖性。"即使您排除文件夹,如果导入的文件(如Component或NgModule)对node_modules中的文件有一定的依赖性,tsc也会尝试编译该文件。