creativelifeform / three-nebula

WebGL based particle system engine for three.js

Home Page:https://three-nebula.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

npm version 7 returns the error "ERESOLVE unable to resolve dependency tree".

MasatoMakino opened this issue · comments

Expected Behavior

Using npm version 7, three.js r129 and three-nebula can be installed successfully

Actual Behavior

npm version 7 returns error messages

npm i
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: three-nebula-behaviour-plugin@0.1.5
npm ERR! Found: three@0.129.0
npm ERR! node_modules/three
npm ERR!   dev three@"^0.129.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer three@"^0.122.0" from three-nebula@10.0.1
npm ERR! node_modules/three-nebula
npm ERR!   dev three-nebula@"10.0.1" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR! 
npm ERR! See .npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     .npm/_logs/2021-06-15T04_57_42_110Z-debug.log

Minimum configuration for reproduction

  • Install npm version 7
  • Configure package.json as follows.

▼package.json

  "devDependencies": {
    "three": "^0.129.0",
    "three-nebula": "10.0.1",
  }

Cause of the problem

This problem was caused by a destructive change in npm version 7.

https://github.blog/2021-02-02-npm-7-is-now-generally-available/

Peer dependencies

Automatically installing peer dependencies is an exciting new feature introduced in npm 7. In previous versions of npm (4-6), peer dependencies conflicts presented a warning that versions were not compatible, but would still install dependencies without an error. npm 7 will block installations if an upstream dependency conflict is present that cannot be automatically resolved.

You have the option to retry with --force to bypass the conflict or --legacy-peer-deps command to ignore peer dependencies entirely (this behavior is similar to versions 4-6).

npm v7 strictly validates versions of Peerdependencies. npm v7 will follow node-semver

Caret Ranges are related to this issue. Caret range behaves differently depending on whether the major version is 0 or not. If the major version is 0, it behaves as a minor version as a major version. Therefore, npm v7 will treat three.js 0.122.0 and three.0.129.0 as incompatible software with different major versions.

Proposal

"peerDependencies": {
"three": "^0.122.0"
},

Change here to

"three": ">=0.122.0 <1.0.0"

Specifications

Version: three-nebula v10.0.1 + three.js r129
Platform: macOS 11.4
npm : 7.17.0

Right okay! Happy to accept a PR for this one @MasatoMakino if you have time!

This Issue was resolved by PR #172. Additionally, as there has been no activity for an extended period, this Issue will be closed. If any related issues are discovered, please feel free to reopen this Issue.