testdouble / quibble

Makes it easy to replace require'd dependencies.
94 stars 25 forks source link

Fix: Resolve 3rd party esm without quibbledUrl #115

Open andreek opened 1 month ago

andreek commented 1 month ago

In Node.js >= v21.0.0 quibble adds 3rd party libs with ?__quibble=0 suffix as key to the quibbled modules. When Node.js is resolving the real module quibble does not find the mock, because this url does not include ?__quibble=0.

I think it's related to these API changes: https://github.com/testdouble/quibble/pull/96

This PR fixes this problem by excluding urls with node_modules from being resolved with quibbledUrl.

Fixes: https://github.com/testdouble/testdouble.js/issues/530

quinnturner commented 1 month ago

You may also want to consider other node resolution algorithms like PNPM and Yarn, both of which use symlinks that may result in not having a node_modules folder. For example, including .yarn or .pnpm.

andreek commented 2 weeks ago

You may also want to consider other node resolution algorithms like PNPM and Yarn, both of which use symlinks that may result in not having a node_modules folder. For example, including .yarn or .pnpm.

Thanks for the hint but I don't see a problem if I'm not missing something. I've used PNPM to develop this PR and every symbolic link includes /node_modules/ as suffix. I'm not that familiar with yarn, but I don't run into a problem with it either.

marcoreni commented 1 day ago

I can confirm that this PR makes quibble work with Node22. I'm using PNPM, so no troubles on that side. @searls any chance of getting this merged and released?