"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' 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。
我做到了:
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
设置将无效。
我正在使用 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' 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。
我做到了:
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
设置将无效。