Yarn: Compatibility errors should show dependency path

Created on 12 Oct 2016  ยท  20Comments  ยท  Source: yarnpkg/yarn

Do you want to request a _feature_ or report a _bug_?
Request a feature

What is the current behavior?
When compatibility errors occur, yarn prints something like this:

error [email protected]: The engine "node" is incompatible with this module. Expected version "0.8.x".
error Found incompatible module

In my case, pngjs is some deep sub-dependency. From the current output I can't see which dependency I need to update in order (possibly) fix this issue.

What is the expected behavior?
I'd like to see the dependency path, similarly to the output yarn generates for deprecation messages:

warning nightwatch > mocha-nightwatch > glob > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

Most helpful comment

Also have that issue;
error [email protected]: The engine "node" is incompatible with this module. Expected version "0.8.x".

All 20 comments

I'd like to tackle this by myself, but:

It seems that deprecation issues are handled by the package resolving step, which has access to all the PackageRequests and their parents, allowing it to iterate through parents and print out the dependency path.

Compatibility is handled by the PackageCompatibility though, which does not have access to the package requests and therefor does not know about the way dependencies are related to each other.

Would it make sense to make PackageResolver#init return all (fulfilled) requests, pass them to the PackageCompatibility module which uses the requests to check for compatibility issues? This way it would have access to the package's parentRequest variable and could walk up the parents.

Am I making sense here?

Having the same Problem but with different package:

[2/4] Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version "^4.0.0".
error Found incompatible module
info Visit http://yarnpkg.com/en/docs/cli/install for documentation about this command.

i have node 6+ installed, so this should not pop up ,,

@H34D: ^4.0.0 means 4.x.x, so 6.x.x doesn't match the pattern.

yea, you are right, my bad sorry. thought it was >= 4.x.x. but this was never an issue for NPM, it is for yarn.

Is there a recommended workaround for this?

Someone suggested in another issue to introduce a flag to force the install anyway, but that issue is also open I believe.

Same issue here. Would love a workaround

Same as with @H34D. Zombie wants >=4.0.0, but Yarn fails with incompatible Expected version "^4.0.0": https://github.com/assaf/zombie/blob/master/package.json#L14

Also have that issue;
error [email protected]: The engine "node" is incompatible with this module. Expected version "0.8.x".

I also have this issue.
[email protected]: The engine "node" is incompatible with this module. Expected version "~0.10.28".

[email protected]: The engine "node" is incompatible with this module. Expected version "0.8.x".

Same here

working with v0.15.1(currently master branch). npm build and use the binary in bin folder to building my project( run with --ignore-engines) works for me.
something like:

$ cd YOUR_PORJECT_DIR

$../PATH_TO_YOUR_LOCAL_YARN_REPO/yarn/bin/yarn install  --ignore-engines

The --ignore-engines flag is in the master branch, as @lielran has mentioned, and the next cut release should fix this issue, assuming you use the flag.

Guys, this issue is not about a bug in the engine compatibility check. This issue is requesting a feature that shows you which packages has the broken dependency.

Got something little different than just version incompatibility...

error [email protected]: The platform "win32" is incompatible with this module.
error [email protected]: The CPU architecture "x64" is incompatible with this module.
error Found incompatible module

As with a few others, I'm seeing:

error [email protected]: The engine "node" is incompatible with this module. Expected version "0.8.x".

@darrylyoung We had exactly the same issue.. and we killed the whole dependency which used it.. try this to find it :)

npm ls hawk

(Obviously this is not a solution.. more like a workaround)

I'm gonna close this issue since people don't seem to understand the idea behind this feature request.

I think this feature of seeing where the dependency is would be nice. in the meantime, a workaround is to use NPM and to do npm ls dep
e.g.

npm ls pngjs
tests@ ...
โ””โ”€โ”ฌ [email protected]
  โ””โ”€โ”ฌ [email protected]
    โ””โ”€โ”ฌ [email protected]
      โ””โ”€โ”€ [email protected]

npm ls is not helping in the case of the error [email protected]: The engine "node" is incompatible with this module. Expected version "0.8.x" error. [email protected] does not show up anywhere in the output though higher-numbered versions do.

--- update ---

OK. After I run yarn with --no-engines, I do see the issue by running npm ls hawk.

[email protected] /home/stevejorgensen/work/designhub/dhui
โ””โ”€โ”ฌ UNMET DEPENDENCY [email protected]
  โ””โ”€โ”ฌ UNMET DEPENDENCY [email protected]
    โ””โ”€โ”ฌ UNMET DEPENDENCY [email protected]
      โ””โ”€โ”ฌ UNMET DEPENDENCY [email protected]
        โ””โ”€โ”€ UNMET DEPENDENCY [email protected]

Try:
yarn install --ignore-engines

Was this page helpful?
0 / 5 - 0 ratings