question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Can't install with NPM (Workaround: use yarn instead)

See original GitHub issue

Is there an existing issue for this?

  • 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

  1. run command sudo npm i -g code-server
  2. 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 node-gyp@9.0.0
npm ERR! gyp info using node@16.15.0 | 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?

  • I cannot reproduce this in VS Code.

Are you accessing code-server over HTTPS?

  • I am using HTTPS.

Notes

Node Version: 16.15.0 NPM Version: 8.5.5 Running on a Raspberry Pi 4

Issue Analytics

  • State:closed
  • Created a year ago
  • Comments:13 (9 by maintainers)

github_iconTop GitHub Comments

4reactions
edvincentcommented, May 9, 2022

I wonder why it works with yarn and not npm

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?

3reactions
edvincentcommented, Aug 22, 2022

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 argon2@0.28.4 rather than the latest argon2@ 0.28.7 (which I had trouble with when installing locally).

Read more comments on GitHub >

github_iconTop Results From Across the Web

Force yarn install instead of npm install for Node module?
UPDATE: Alexander's answer is the better solution and uses the same technique I describe here. I am leaving my answer in tact for...
Read more >
Error installing package using yarn instead of npm #275
I have package.json with "aerospike": "^2.7.2" . I am using mac. Earlier checks [✓] /usr/local/lib/libaerospike.a were getting failed so I ...
Read more >
How to force package installs to use yarn not npm
This is my solution. If you add a "preinstall" script to your package.json it is run before any install by npm or yarn....
Read more >
Migrating from npm
Migrating from npm should be a fairly easy process for most users. Yarn can consume the same package.json format as npm, and can...
Read more >
npm, pnpm, and Yarn | IntelliJ IDEA Documentation
Make sure you have Yarn 1 installed globally and enable Yarn 2 in your project as described on the Yarn official website. Use...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found