我正在用打字稿写chai-mocha测试
import * as chai from 'chai'
const chaiHttp = require('chai-http')
chai.use(chaiHttp)
...
await chai.request('http://localhost:' + config.expressPort)
上面的代码抛出错误Property 'request' does not exist on type 'ChaiStatic'
但是如果我改变chai-http的导入方式
import chaiHttp = require('chai-http')
代码成功运行。
我从来没有导入过像这样的任何库。我想知道这里到底发生了什么。
P.S .:这是我的测试脚本:
mocha --require ts-node/register test/test.spec.ts -t 5000 --exit
注意:安装@ types / chai-http之后,然后添加import * as chaiHttp from 'chai-http'
代码,然后出现错误resolved into a non-module entity and cannot be imported from this construct
答案 0 :(得分:0)
我在本地尝试了该代码,使用const和import语句时也遇到了相同的错误。
Property 'request' does not exist on type 'ChaiStatic'.
但是,生成的js应该相同。查看js文件,它生成为
var chaiHttp = require("chai-http");
因此问题发生在从TS到JS的编译时。为了解决这个问题,我安装了@types/chai-http
npm install @types/chai-http --save-dev
答案 1 :(得分:0)
假设您已安装@types/chai-http
,则import chaiHttp = require('chai-http')
是a special syntax recognized by TypeScript,以导入使用导出分配的CommonJS模块。作为导入,它使TypeScript加载chai-http
类型声明,其中包括使chai.request
工作的增强。在const chaiHttp = require('chai-http')
中,require('chai-http')
被视为普通函数调用,不会导致TypeScript加载chai-http
类型声明。