Typescript 2无法找到自定义定义

时间:2016-10-07 10:02:04

标签: typescript

我试图使用NPM中的一些外部js库和我的打字稿项目,遗憾的是这些库没有提供@types定义,所以我已经开始编写自己的。当我将它们嵌入./node_modules/@types/<library_name>/*.d.ts但我将它们移动到例如./@types/<library_name>/*.d.ts时,我写的定义就起作用了。 ERROR in ./utils/eventEmitter.ts (1,25): error TS2307: Cannot find module 'events'. 他们没有被编译器接听,我收到以下错误:

@types/
-- events
---- index.d.ts
node_modules/
-- @types
-----react, react-dom etc
utils/
-- eventEmitter.js
tsconfig.json

我正在使用:来自npm的TypeScript版本:2.0.3

我有以下项目结构设置

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "target": "es5",
    "jsx": "react",
    "allowJs": true,
    "sourceMap": true,
    "typeRoots" : [
      "./@types"
    ],
    "types" : [
      "events",
      "ajax",
      "path",
      "keymirror"
    ]
  },
  "exclude" : [
    "node_modules",
    "@types"
  ]
}

在我的tsconfig.json中,我有:

import * as events from "events";
eventEmitter.js 中的

我有以下内容:

./node_modules/events/index.js

只是为了澄清模块JS位于{ "nodes": [ { "address":"127.0.0.1", "attributes": [ { "id":"abc", "required":true }, { "id":"def", "required":true }, { "id":"ghi", "required":false } ] }, { "address":"127.0.0.2", "attributes": [ { "id":"abc", "required":false }, { "id":"def", "required":false } ] } ] }

的具体事件

3 个答案:

答案 0 :(得分:1)

我的问题所描述的问题已被确认为打字稿中的错误(我使用的是2.0.3)。

解决方案是将以下配置添加到tsconfig.json:

Builders<ArtistsDocument>.Filter.ElemMatch

根据:github issue

答案 1 :(得分:0)

请以这种方式使用:

import * as events from "./events";

使用时

 import * as events from "events";

打字稿在node_modules中搜索它,你需要用 ./

给他相对路径

答案 2 :(得分:0)

您可以将文件定义文件保存在项目的根目录中,然后tsc会找到它。