我试图使用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
}
]
}
]
}
答案 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会找到它。