Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependencies broken on Node 20 #6072

Closed
vladh opened this issue Dec 15, 2023 · 1 comment
Closed

Dependencies broken on Node 20 #6072

vladh opened this issue Dec 15, 2023 · 1 comment
Assignees

Comments

@vladh
Copy link

vladh commented Dec 15, 2023

I'm running Node 20, and after freshly cloning this repo then running npm install better-sqlite3 in src/, I get the following:

$ ./src/bin/run.sh
Copy the settings template to settings.json...
Installing dependencies...
Installing dev dependencies
npm WARN config optional Use `--omit=optional` to exclude optional dependencies, or
npm WARN config `--include=optional` to include them.
npm WARN config 
npm WARN config     Default value does install optional deps unless otherwise omitted.
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR! 
npm ERR! While resolving: eslint-config-etherpad@3.0.22
npm ERR! Found: typescript@5.3.3
npm ERR! node_modules/typescript
npm ERR!   dev typescript@"^5.3.3" from the root project
npm ERR!   peer typescript@">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" from tsutils@3.21.0
npm ERR!   node_modules/tsutils
npm ERR!     tsutils@"^3.21.0" from @typescript-eslint/eslint-plugin@5.62.0
npm ERR!     node_modules/@typescript-eslint/eslint-plugin
npm ERR!       @typescript-eslint/eslint-plugin@"^5.62.0" from eslint-config-etherpad@3.0.22
npm ERR!       node_modules/eslint-config-etherpad
npm ERR!         dev eslint-config-etherpad@"^3.0.22" from the root project
npm ERR!     tsutils@"^3.21.0" from @typescript-eslint/type-utils@5.62.0
npm ERR!     node_modules/@typescript-eslint/type-utils
npm ERR!       @typescript-eslint/type-utils@"5.62.0" from @typescript-eslint/eslint-plugin@5.62.0
npm ERR!       node_modules/@typescript-eslint/eslint-plugin
npm ERR!         @typescript-eslint/eslint-plugin@"^5.62.0" from eslint-config-etherpad@3.0.22
npm ERR!         node_modules/eslint-config-etherpad
npm ERR!     1 more (@typescript-eslint/typescript-estree)
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer typescript@"^4.5.5" from eslint-config-etherpad@3.0.22
npm ERR! node_modules/eslint-config-etherpad
npm ERR!   dev eslint-config-etherpad@"^3.0.22" from the root project
npm ERR! 
npm ERR! Conflicting peer dependency: typescript@4.9.5
npm ERR! node_modules/typescript
npm ERR!   peer typescript@"^4.5.5" from eslint-config-etherpad@3.0.22
npm ERR!   node_modules/eslint-config-etherpad
npm ERR!     dev eslint-config-etherpad@"^3.0.22" 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! 
npm ERR! For a full report see:
npm ERR! /root/.local/state/npm/_logs/2023-12-15T18_43_04_443Z-eresolve-report.txt

Some leads:

  • src/package-lock.json has "lockfileVersion": 1 but the latest seems to be 3
  • I don't understand why node_modules/ is versioned with a ep_etherpad-lite -> ../src symlink in it
  • I don't understand why there's a node_modules/ in the root but the package.json is in src
  • run.sh reinstalls dependencies on every run. What is the logic here? Whenever you restart your service, updates are installed, potentially breaking everything? In my case, restarting a version of Etherpad that was a few months old made it not start at all anymore on the next run. And anyway, why update behind my back?

I've stopped using this project because the above issues make it extremely unreliable, but I hope my comments help.

@vladh vladh changed the title Crash on clean clone and start Dependencies broken on Node 20 Dec 15, 2023
@SamTV12345 SamTV12345 self-assigned this Dec 15, 2023
@SamTV12345
Copy link
Member

Hi
thanks for raising the attention on this bug.

  • The problem is that Etherpad only runs with lockfileVersion 1. Any other version breaks the dependency resolution.
  • node_modules is symlinked to the root folder so that you can more easily map that directory to the docker host.
  • This is because of the reason mentioned before. We always install the dependencies in the src directory and then the folder is symlinked to the parent directory.
  • If you map the node_modules directory as a volume the directory is persisted on the host. That way you don't need to reinstall it on every restart as containers itself don't hold changes. If you do that and want to upgrade to a newer version you then need to unmap the directory and reinstall better-sqlite.

TLDR: could you try etherpad/etherpad:develop and check if that fixes your problem. The command should be the same.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants