为什么我会收到此类错误以及更多此类错误?我正在添加一个指向repo的链接以及下面的关键代码片段。我认为我对依赖性和"包括"有一个基本的误解。链接作品。
csvproc(master)> tsc
node_modules/typescript/bin/lib.core.d.ts(83,5): error TS2300: Duplicate identifier 'configurable'.
node_modules/typescript/bin/lib.core.d.ts(84,5): error TS2300: Duplicate identifier 'enumerable'.
node_modules/typescript/bin/lib.core.d.ts(85,5): error TS2300: Duplicate identifier 'value'.
node_modules/typescript/bin/lib.core.d.ts(86,5): error TS2300: Duplicate identifier 'writable'.
我的tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"outDir": "built/",
"sourceMap": true,
"target": "es5"
}
}
我的tsd.json:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "master",
"path": "typings",
"bundle": "typings/tsd.d.ts",
"installed": {
"node/node-0.10.d.ts": {
"commit": "6387999eb899d0ba02d37dd8697647718caca230"
},
"should/should.d.ts": {
"commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
}
}
}
我的tsd.d.ts:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "master",
"path": "typings",
"bundle": "typings/tsd.d.ts",
"installed": {
"node/node-0.10.d.ts": {
"commit": "6387999eb899d0ba02d37dd8697647718caca230"
},
"should/should.d.ts": {
"commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
}
}
}
答案 0 :(得分:104)
这是因为两件事的结合:
tsconfig
没有任何files
部分。来自http://www.typescriptlang.org/docs/handbook/tsconfig-json.html 如果没有"文件"属性存在于tsconfig.json中,编译器默认包含包含目录和子目录中的所有文件。当一个"文件"指定了property,只包含那些文件。
typescript
作为npm依赖项:node_modules/typescript/
这意味着所有typescript
都包含在内......无论如何,项目中都隐含了lib.d.ts
( http://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html)和它与NPM版本的打字稿一起发布的那个相冲突。 明确列出files
或include
https://basarat.gitbooks.io/typescript/docs/project/files.html
答案 1 :(得分:66)
更新:Typings版本1.0更改了输出结构,以下答案与1.0之前版本有关。
如果您在tsconfig.json中使用Typings和exclude,则可能会遇到重复类型的问题,需要类似以下内容:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
为了简化与TypeScript的集成,会生成两个文件 - typings / main.d.ts和typings / browser.d.ts - 它们引用项目中安装的所有类型,一次只能使用其中一个。
因此,根据您需要的版本,您应该排除(或包含)"浏览器"或者#34; main"键入文件,但不是两者,因为这是重复项的来源。
This Typings issue更多地讨论了它。
答案 2 :(得分:23)
如果您已在typings文件夹
下单独安装了打字String website = "http://www.svensktnaringsliv.se/english/publications/?start=" +maxPage;
Document docOne = Jsoup.connect(website).get();
Elements els = docOne.select("a.subHover");
for (Element el : els ){
System.out.println(el);
}
答案 3 :(得分:16)
问题通过简单解决:
node_modules
文件夹npm install
以获取所有包含正确版本的软件包在我的情况下,更改Git分支后出现问题,其中新分支使用不同的节点模块集。旧分支使用TypeScript v1.8,新版本v2.0
答案 4 :(得分:15)
我刚遇到这个问题。当我运行npm start
时,我收到了一堆重复的标识符错误。
<强> SOLUTION:强>
从项目根文件夹中运行:
rm -r typings
typings install
npm start
一切正常。
答案 5 :(得分:11)
你也可以在tsconfig.json文件中使用exclude选项,如下所示:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
答案 6 :(得分:4)
在我的情况下,我收到错误
node_modules/@types/es6-promise/index.d.ts(11,15):错误TS2300:重复标识符'Promise'。
我的package.json上有@types/es6-promise
,但我的tsconfig
已经在target: "es6"
。所以我猜编译时与Promise
存在冲突。
从我的@types/es6-promise
文件中删除package.json
解决了这个问题。
答案 7 :(得分:3)
使用 webpack 我遇到了同样的错误,以防你排除 tsconfig.json 中的.d.ts
文件,而node_modules解决了我的问题:
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts",
"typings/index.d.ts"
]
答案 8 :(得分:1)
我遇到了这个问题,原因是磁盘上有一个意外的文件夹(jspm_packages
,不再使用),这个文件夹没有被源代码控制跟踪(并且从我的IDE中隐藏)。这里有一个重复的TypeScript安装,导致了这些问题。
有点边缘情况,但在这里留下答案以防万一其他人正在寻找这个解决方案。
答案 9 :(得分:0)
我遇到了这个问题,事实证明我的项目中有一个第二个node_modules文件夹,它不应该在那里:-(
答案 10 :(得分:0)
在我将tsconfig.json更改为target后,我和其他人一起出现了这个错误:&#34; es2015&#34;和模块:&#34; es2015&#34;。
基础(AngularJS2快速入门)在main.ts文件中使用了/// <reference path="../../typings/index.d.ts" />
。为了解决这个问题,我不得不删除该行。
答案 11 :(得分:0)
我们从网站文件夹中删除了一个lib文件夹。这是由以前的打字安装创建的。这变得重复了。当它被删除它工作!
答案 12 :(得分:0)
这可能是因为您的节点文件夹中同时存在输入和依赖关系。 因此,首先检查@types文件夹中的内容,如果有依赖项,请删除重复项。 对我来说这是core.js
答案 13 :(得分:0)
从package.json文件中删除此@ types / express-validator,然后运行npm install
作者留言: 此软件包已被弃用 这是express-validator(https://github.com/ctavan/express-validator)的存根类型定义。 express-validator提供自己的类型定义,因此您不需要安装@ types / express-validator!
答案 14 :(得分:0)
运行以下命令将解决此问题。
npm install @types/node --save-dev
答案 15 :(得分:0)
将 "typeRoots": ["node_modules/@types"],
添加到 tsconfig.json 文件中的“compilerOptions”对我有用。
答案 16 :(得分:-2)
我遇到了类似的问题。只需将我的tsconfig.json从项目的根目录移动到另一个范围就可以了。在我的项目中,我将tsconfig.json从根目录移至wwwroot。
答案 17 :(得分:-2)
完全关闭解决方案并重新运行项目解决了我的问题。