Open niquedegraaff opened 1 month ago
I think the docs are just slightly ahead of where the code is. Our mistake (i.e the docs got updated but the code didn't yet)
The latter is correct for now - importing and using the use
function, then chai.request
In future, request
should be imported directly
Also the deprecation notice is correct, we should update our main field to include a file extension. Contributions welcome 🙏
Now if i import it like this,
import { use, expect } from "chai"; import chaiHttp from "chai-http"; import app from "../app/app.js"; // Our app const chai = use(chaiHttp); describe("User", () => { before(() => {}); after(() => {}); it("should create a user", async () => { const res = chai.request(app).get("/users/create"); expect(res).to.have.status(200); expect(res).to.be.json; }); });
Any update ? i got the exact same issue here
Update - not exactly a solution but downgrading it to 4.5.0 works for me
https://github.com/chaijs/chai-http?tab=readme-ov-file#application--server
as per the updated readme, it should be chai.request.execute(app)
rather than chai.request(app)
this seems clear from the readme, so maybe we just need a notice somewhere to tell you and others it has changed. do you have any suggestions for how this would've been easier to find?
Importing chai mocha in current state is just a hell. No matter how i try to import it, it will certainly throw breaking errors.
In the docs, it is stated that when using ESM modules, that we need to use this kind of import statements:
How is that correct syntax? I cannot import chai like that. (Yes i have ESM enabled)![image](https://github.com/user-attachments/assets/ce9afe24-d6f5-414b-b528-0701799a0e65)
Now if i import it like this,
Then it throws the
TypeError: chai.request is not a function
error and also a deprecation warning:(node:7452) [DEP0151] DeprecationWarning: Package \xxcensoredxx\node_modules\chai-http\ has a "main" field set to "./index", excluding the full filename and extension to the resolved file at "index.js", imported from \xxcensoredxx\test\user.test.js. Automatic extension resolution of the "main" field is deprecated for ES modules. (Use
node --trace-deprecation ...to show where the warning was created)