34

我正在使用此处找到的出色的 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时间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。

4

9 回答 9

45

同样,我也遇到了node_modules排斥问题。

这是一个笨拙的解决方案,它忽略了所有*.d.ts文件。

我添加到compilerOptions

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

有关的:

于 2019-09-04T15:49:59.747 回答
11

importTypescript 将拉入由项目文件中的语句引用的任何路径。

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

于 2020-11-17T23:58:18.123 回答
6

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

{
...
  "exclude": [
    "**/node_modules",
    "**/typings"
  ]
...
}```
于 2020-10-18T17:59:40.310 回答
4

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

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

于 2021-05-12T23:04:02.593 回答
3

我确实看到这是不久前的事情,而且您已经接受了答案,但我想添加以下内容,记录在此处

"重要提示:排除因包含设置而包含的文件的更改。"

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

于 2021-11-14T02:50:01.153 回答
2

我只是有同样的问题。拉我的头发大约 30 分钟,然后发现如果我改变:

"target": "ES5",

"target": "ES6",

所有的错误都消失了!

于 2016-05-17T19:30:18.200 回答
1

我做了:

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 .

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

于 2015-12-16T12:56:42.703 回答
-1

我有这个问题,我exclude看起来像这样:

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

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

"exclude": [
  "node_modules"
]
于 2016-07-23T20:51:57.477 回答
-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 也会尝试编译该文件。

于 2017-04-02T12:51:16.243 回答