I have a Typscript app and API. I wrote the below test per numerous Google searches and some examples found here on SO and other places. I see no issue in the test code. Googling TypeError: chai.request is not a function, so far is getting me now where. Do you see my error below?
Thank you, thank you, thank you for any help :-)
I solved this by the following approach (Express.js with TypeScript)
import chai from 'chai';
import chaiHttp from 'chai-http';
chai.use(chaiHttp);
Hope it helps.
Remember to install @types/chai and other type definition packages for the block above to work
I can reproduce the problem if I enable the esModuleInterop compiler option. When this option is enabled, import * as chai from 'chai'; only imports the members that the chai module has at the time it is imported. Indeed, I believe it's considered dodgy to add exports to an ES module at runtime. Try import chai from 'chai'; or import chai = require('chai'); instead; either one is working for me.
You are mixing import and require syntax, it's a bad idea!
Use only import syntax :
import * as chai from 'chai';
import * as chai-http from 'chai-http';
chai.use(chai-http);
Edit
Unfortunately, it seems that the es6 module syntax is not supported in chai-http. You can see the issue here
import * as chai from 'chai';
import chaiHttp = require('chai-http');
chai.use(chai-http);