Javascript Typescript抛出错误属性';至';不存在于类型';匹配器';编译mocha/chai测试文件时

Javascript Typescript抛出错误属性';至';不存在于类型';匹配器';编译mocha/chai测试文件时,javascript,typescript,mocha.js,chai,Javascript,Typescript,Mocha.js,Chai,我正在尝试将javascript单元测试移植到typescript,但是,使用内置matcher的简单测试失败: describe('test getBranches', function() { it('returns an array of branches', function() { branchService.getBranches(owner, name) .then(function(res) {

我正在尝试将javascript单元测试移植到typescript,但是,使用内置matcher的简单测试失败:

describe('test getBranches', function() {
        it('returns an array of branches', function() {
            branchService.getBranches(owner, name)
            .then(function(res) {
                expect(res).to.exist;//<-- this is where the error is from
            })
        })
    })
我不熟悉打字,但我想我缺少了一些摩卡或柴的打字文件?此后,我安装了
打字
,并执行了以下操作:

typings install dt~mocha --save --global
typings install dt~chai --save --global
typings install dt~chai-as-promised --save --global
但这根本没什么区别


注意,生成的js文件很好,测试通过了。我只想知道为什么typescript会出现此错误,以及如何使其消失。

理想情况下,通过
@types
摩卡
安装为npm包:

  • npm安装--save@types/mocha
  • npm安装--save@types/chai
  • npm安装——按承诺保存@types/chai

通过这种方式,您可以完全放弃
打字
工具,即使包含所有
////匹配器
从何而来?我看起来不像是柴的一部分。还有,如何导入
expect
?@Martin,错误来自行expect(res)。to,所以我假设expect返回匹配器类型?是的,我想问
Matchers
类来自哪里,因为它既不存在于
mocha
中,也不存在于
chai
中,所以看起来您的导入有问题。@Martin,你说得对,我找到了来自jasmine expect的Matchers,这是否意味着我使用的是jasmine而不是chai?如何让打字脚本选择chai的期望?我没有在我的ts文件中导入任何内容请查看您的
打字。d.ts
也许您在那里留下了一些东西。这解决了问题,只是@types/mocha会导致一系列错误,如TS2300重复标识符“descripe”,省略@types/mocha会起作用。此外,我还需要在spec.ts文件中从'chai'导入{expect}。您可能在某处包含了两次
d.ts
(它也是由
tsc
自动发现的)。我只使用了
@types/mocha
,并且运行良好,没有任何警告(同时确保删除
typings
目录)我想这是因为我安装了jasmine,它一定带有量角器,但我不知道为什么它安装了类型定义,因为我没有在e2e测试中使用typescript。我已经完全卸载了typings及其目录,但仍然无法使用types@mochabtw,检查您在
node_modules/@types
中有什么,以及
node_modules
中是否有任何茉莉花剩菜
是的,如果我将其删除并安装@types/mocha,它将再次返回,因为它依赖于量角器,├── @类型/mocha@2.2.32 └─┬ protractor@4.0.10 └── @类型/jasmine@2.5.37
typings install dt~mocha --save --global
typings install dt~chai --save --global
typings install dt~chai-as-promised --save --global