code-server icon indicating copy to clipboard operation
code-server copied to clipboard

[Bug]: argon2 can't rebuild at alpine 3.15 node 16

Open 502647092 opened this issue 2 years ago • 8 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

OS/Web Information

  • Web Browser:
  • Local OS: Windows
  • Remote OS: Alpine
  • Remote Architecture: amd64
  • code-server --version: 4.4.0

Steps to Reproduce

  1. docker run -it alpine:3.15 sh
  2. apk add make g++ nodejs yarn npm
  3. npm install -g code-server --unsafe-perm

Expected

install successful

Actual

fail to install argon2

Logs

npm install -g code-server --unsafe-perm
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 | x64
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/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/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.14.2/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.14.2',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/root/.cache/node-gyp/16.14.2/<(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/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:261:16)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 3.10.0-1062.18.1.el7.x86_64
npm ERR! gyp ERR! command "/usr/bin/node" "/usr/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.14.2
npm ERR! gyp ERR! node-gyp -v v8.3.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-10T02_13_13_041Z-debug.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

No response

502647092 avatar May 10 '22 02:05 502647092

Happens to me as well on my raspberry.

notmrmario avatar May 10 '22 18:05 notmrmario

Hmm...have you tried posting this in the node-argon2 repo? I feel like this is unexpected since they say they support Alpine 🤔

jsjoeio avatar May 10 '22 19:05 jsjoeio

Hmm...have you tried posting this in the node-argon2 repo? I feel like this is unexpected since they say they support Alpine 🤔

I try direct install argon2 it's successful argon2 can compile at node12 but can't compile at node16

502647092 avatar May 11 '22 01:05 502647092

Interesting...I wonder if it's related to this: https://github.com/ranisalt/node-argon2/issues/345

jsjoeio avatar May 11 '22 21:05 jsjoeio

I'd say it is related to #5174. I have the same problem and error with npm on the Raspberry Pi. I got it working by using '--ignore_scripts' with npm and do a manual install to get 'postinstall.sh' to run. Then the errors led me to argon2. I had to go down to argon2, do 'npm install', do 'npm update' and then add any missing node modules that code-server complained about.

Without '--ignore_scripts', code-server is removed at the end of the installation so you cannot debug it.

So the main problem seems to be that argon2 does not get built on my Raspberry Pi when installing code-server. It is the same problem, but with slightly different errors, when I install it locally and globally.

kernie66 avatar Jun 19 '22 18:06 kernie66

Tried to install it with yarn as suggested in #5174 and it seemed to work. But for some reason it didn't find the git repository in the folder. Returning to my '--ignore_scripts' installation and git works again.

kernie66 avatar Jun 20 '22 19:06 kernie66

I had the same problem installing as @kernie66. Sadly, --ignore_scripts doesn't work at all.

Seems to be about these error lines:

npm ERR! gyp: Undefined variable module_name 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

Keropon avatar Jul 18 '22 02:07 Keropon

Yes, the error is caused by that argon2 hasn't been built. By manually going to ./node_modules/argon2 and do npm install, that error goes away. But on my second RPi, I also had to install argon2 dependencies manually several times before everything worked.

kernie66 avatar Jul 18 '22 07:07 kernie66