node.js - 包含 node.d.ts 时出现 Typescript 编译器错误

标签 node.js typescript tsc

我最近开始从 PHP 切换到 Node.js,并且由于我是 Typescript 的 super 粉丝,所以我使用的是 Typescript + Node.js。当我开始扩展并真正构建我的代码时,我的示例编译得很好。但后来我遇到了一个问题。每当在我的一个 .ts 文件中引用 node.d.ts(带有引用文档注释)时,Node.js 中的 Typescript 编译器就会提示重复的定义。我的两个 .ts 文件提示没有 node.d.ts 定义,但我的 main.js 文件没有。 (以下文件:)

search_request.ts

/// <reference path="definitions/mustache.d.ts" />

import url = module("url");
import mu = module("mu2");

export function handler(request, response) {
    //code..
}

主要.ts

/// <reference path="servers/search_request.ts" />

import search_request = module("./servers/search_request");
import express = module("express");

var app = express();

app.get("/search.html", search_request.handler);
app.listen(3000);

如果我添加 <reference path="node.d.ts" />到 search_request.ts 的顶部,它编译得很好。如果我删除它,我会收到有关缺少定义的警告。但是,如果我将它包含在任一文件中,编译 main.ts 将给我数百条关于重复标识符的警告。

我不是 Typescript 的新手,但我是 Node.js 的新手,也是直接使用 tsc 编译器而不是通过 VS2012 的新手。我到底做错了什么?编译器是否像 lib.d.ts 一样隐式包含 node.d.ts?如果是这样,为什么我在编译 search_request.ts 时会出错?

最佳答案

因此,Ryan Cavanaugh 的更改确实解决了我的问题,但是以迂​​回的方式。我真正的问题完全如您所料:node.d.ts 被包含了不止一次(就像 express.d.ts 一样)。我的文件结构是这样的:

C:\Project
   -node.d.ts
   \public
      -main.ts
      \definitions
         -node.d.ts

很自然地,在我的 main.ts 文件中,我包含了 definitions/node.d.ts。但是不知何故,node(或者可能是 tsc)自动包含了直接高于 main.ts 的 node.d.ts 文件。我不知道怎么回事,它仍然让我很困惑,但这就是问题所在。

关于node.js - 包含 node.d.ts 时出现 Typescript 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15753432/

相关文章:

javascript - 如何解决 TypeScript 编译器错误 "Namespace ' NodeJS' has no export member 'Global' "?

typescript - 我可以使用 typescript 在生成的 javascript 中添加额外的评论吗?

javascript - Nodejs Express MongoClient 集合检索

json - 垃圾 JSON 响应 - Node 请求

javascript - 如何获取 Angular 中可见元素的连续索引并忽略隐藏元素 *ngFor 的索引?

具有来自 Web 服务的动态元数据的 Angular 6 元服务

node.js - 使用 TypeScript 正确扩展stream.Transform类

node.js - 如何防止 node.js 中的流式 http/s 服务器内存泄漏?

node.js - 为什么我收到错误 "Trying to open unclosed connection."?

angular - 获取 "' 组件'不是已知元素“angular2 中的错误