【问题标题】:TypeScript, MongoDB and Reference IssuesTypeScript、MongoDB 和参考问题
【发布时间】:2014-11-13 12:28:09
【问题描述】:

我有一个使用 TypeScript 和 MongoDB 的 NodeJS 应用程序(内置于 Visual Studio)。

我编写了一个小型库,它将 MongoDB 驱动程序包装在一些 TypeScript 类中,就在今天它开始起作用了。

如果我在我的一个库文件的顶部包含这一行:

/// <reference path='./_scripts/typings/mongodb/mongodb.d.ts' />

它简要地构建,然后开始抱怨“重复标识符”以及其中的很多,例如:

Error   6   Type name 'Transform' in extends clause does not reference constructor function for '"stream".Transform'.
Error   7   Type name 'events.EventEmitter' in extends clause does not reference constructor function for 'events.EventEmitter'.
Error   8   Duplicate identifier 'errno'.
Error   9   Duplicate identifier 'code'.
Error   10  Duplicate identifier 'path'.

所以我把它拿出来,一切都简要好,直到我开始看到围绕这一行报告的问题:

import mongodbNS = require('mongodb');

如果我要删除该行,我会看到以下错误:

public Connect: () => Promise<mongodbNS.Db>;

我可以通过添加删除内容并利用打开的简短可编译窗口来应付 - 但显然这不是方法。

什么是?

【问题讨论】:

  • duplicate identifier 错误消息的示例会很棒
  • 我正在使用 VS 2013 的 Node Tools,它们都来自 node.d.ts。我在上面添加了一些示例。

标签: node.js mongodb typescript


【解决方案1】:

它们都来自node.d.ts

发生这种情况是因为您的项目中有 两个 版本的 node.d.ts(即磁盘上的不同文件)。

【讨论】:

  • 我也遇到过这种情况,所以我搜索了一下,当然有两个。但它们都是其他 d.ts 文件的一部分:socket.io.d.ts 和 mongodb.d.ts,它们都在解决方案中使用。那么,我应该摆脱哪一个?
  • @Michael 年长者。它们应该是兼容的。
  • 然后修复引用旧版本的引用
  • 它们在解决方案中的两个不同项目中,每个项目都引用 node.d.ts 的项目本地版本,每个项目都显示“// Node.js v0.10.1 的类型定义” - 那么哪个更老?这似乎是问题的一个可能原因,但并没有加起来。
  • 我能够删除 mongodb.d.ts 文件中对 node.d.ts 的引用(似乎没有必要),这似乎使问题消失了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-23
  • 2013-04-14
  • 1970-01-01
  • 2014-10-03
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多