我正在使用找到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。
答案 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也会尝试编译该文件。