code-server
code-server copied to clipboard
Can't install with NPM (Workaround: use yarn instead)
Is there an existing issue for this?
- [X] I have searched the existing issues
OS/Web Information
- OS: Ubuntu
code-server --version: 4.4.0 Running on Raspberry Pi 4 on Ubuntu 20.10
Steps to Reproduce
- run command
sudo npm i -g code-server - error appears when installing
Expected
code-server should install and NPM should not log any errors.
Actual
NPM gives an installation error.
Logs
npm ERR! code 1
npm ERR! path /usr/local/lib/node_modules/code-server/node_modules/argon2
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | linux | arm
npm ERR! gyp info find Python using Python version 3.9.7 found at "/usr/bin/python3"
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'make',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/usr/local/lib/node_modules/code-server/node_modules/argon2/build/config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/root/.cache/node-gyp/16.15.0/include/node/common.gypi',
npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=/root/.cache/node-gyp/16.15.0',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=/root/.cache/node-gyp/16.15.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=/usr/local/lib/node_modules/code-server/node_modules/argon2',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! node:internal/modules/cjs/loader:936
npm ERR! throw err;
npm ERR! ^
npm ERR!
npm ERR! Error: Cannot find module 'node-addon-api'
npm ERR! Require stack:
npm ERR! - /usr/local/lib/node_modules/code-server/node_modules/argon2/[eval]
npm ERR! at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
npm ERR! at Function.Module._load (node:internal/modules/cjs/loader:778:27)
npm ERR! at Module.require (node:internal/modules/cjs/loader:1005:19)
npm ERR! at require (node:internal/modules/cjs/helpers:102:18)
npm ERR! at [eval]:1:1
npm ERR! at Script.runInThisContext (node:vm:129:12)
npm ERR! at Object.runInThisContext (node:vm:305:38)
npm ERR! at node:internal/process/execution:76:19
npm ERR! at [eval]-wrapper:6:22
npm ERR! at evalScript (node:internal/process/execution:75:60) {
npm ERR! code: 'MODULE_NOT_FOUND',
npm ERR! requireStack: [
npm ERR! '/usr/local/lib/node_modules/code-server/node_modules/argon2/[eval]'
npm ERR! ]
npm ERR! }
npm ERR! gyp: Call to 'node -p "require('node-addon-api').include"' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
npm ERR! gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:261:16)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:527:28)
npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 5.13.0-1025-raspi
npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /usr/local/lib/node_modules/code-server/node_modules/argon2
npm ERR! gyp ERR! node -v v16.15.0
npm ERR! gyp ERR! node-gyp -v v9.0.0
npm ERR! gyp ERR! not ok
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-05-06T21_41_52_086Z-debug-0.log
Screenshot/Video
No response
Does this issue happen in VS Code?
- [X] I cannot reproduce this in VS Code.
Are you accessing code-server over HTTPS?
- [X] I am using HTTPS.
Notes
Node Version: 16.15.0 NPM Version: 8.5.5 Running on a Raspberry Pi 4
Installing yarn via npm install -g yarn and running sudo yarn global add code-server works however.
Interesting! I wonder why it works with yarn and not npm? Any ideas by chance @edvincent ?
I wonder why it works with
yarnand notnpm
Because yarn doesn't respect ANY lockfiles when installing something globally (and anyway when running yarn publish, files like yarn.lock get deleted.
Why it started failing now is likely because of the Node 14 => 16 transition... And indirectly the fact that I completely forgot to finish #5071... Which partly was because we were trying to find a "perfect" solution...
I won't get around today, but let me update that PR by tomorrow with something to unblock, and maybe we can iterate through a better solution over PRs.
Maybe we should rename this current issue "Can't install with NPM" (with a workaround being "Use yarn") until then?
And a new PR linked to this issue would likely be part of the CI workflows doing an "npm install ARTIFACT" - to catch these?
Ah right @edvincent! Haha no worries at all. There has certainly been a lot of back and forth. I'll keep an eye on your PR.
I was able to get it to build on a Raspberry Pi 4 using the latest npm@^6. I had problems with npm@8.
I had the same problem, but I solved it using yarn too.
https://coder.com/docs/code-server/latest/install#raspberry-pi Would you link this issue to the document above?🙏
I think https://github.com/coder/code-server/pull/5071 should resolve this.
PRs welcome to make any doc changes 🙏🏼
I think #5071 should resolve this.
PRs welcome to make any doc changes 🙏🏼
Thank you and I did request the PR
Confirmed locally with the artifacts from https://github.com/coder/code-server/pull/5071 that code-server can be installed (again) with npm.
Currently it will be in the same state as when using yarn (due to https://github.com/npm/cli/issues/5325): it will use whatever versions of dependencies are the latest at install time.
Seems to install all good as expected now :D
ubuntu@ip-172-26-6-151:~$ npm install -g --unsafe-perm [email protected]
added 211 packages, and audited 212 packages in 1m
12 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
And as a good news, the bug from https://github.com/npm/cli/issues/5325 doesn't seem to affect remote installs (I obviously was only testing with local packages), so the npm install is fully deterministic.
argon2 was the thing I kept looking at - which installed correctly with [email protected] rather than the latest argon2@ 0.28.7 (which I had trouble with when installing locally).
Seems to install all good as expected now :D
woohoo! @edvincent should we close this now?
Closing this since https://github.com/coder/code-server/pull/5071 was merged.