npm / cli

the package manager for JavaScript
https://docs.npmjs.com/cli/
Other
8.38k stars 3.12k forks source link

[BUG] Can't login to NPM #6636

Open exoRift opened 1 year ago

exoRift commented 1 year ago

Is there an existing issue for this?

This issue exists in the latest npm version

Current Behavior

Upon running npm login, I get the following output.

arthur@ARTHUR-AW:/mnt/c/Users/Arthur $ npm login
npm notice Log in on https://registry.npmjs.org/
Login at:
https://www.npmjs.com/login?next=/login/cli/CENSORED
Press ENTER to open in the browser...
npm ERR! code ERR_INVALID_ARG_TYPE
npm ERR! The "file" argument must be of type string. Received undefined
npm ERR! Cannot read properties of undefined (reading 'stdin')

npm ERR! A complete log of this run can be found in: /home/arthur/.npm/_logs/2023-07-09T23_16_48_189Z-debug-0.log

Log:

0 verbose cli /home/arthur/.nvm/versions/node/v18.16.0/bin/node /home/arthur/.nvm/versions/node/v18.16.0/bin/npm
1 info using npm@9.8.0
2 info using node@v18.16.0
3 timing npm:load:whichnode Completed in 1ms
4 timing config:load:defaults Completed in 1ms
5 timing config:load:file:/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/npmrc Completed in 1ms
6 timing config:load:builtin Completed in 1ms
7 timing config:load:cli Completed in 1ms
8 timing config:load:env Completed in 1ms
9 timing config:load:file:/mnt/c/Users/Arthur/.npmrc Completed in 0ms
10 timing config:load:project Completed in 3ms
11 timing config:load:file:/home/arthur/.npmrc Completed in 0ms
12 timing config:load:user Completed in 0ms
13 timing config:load:file:/home/arthur/.nvm/versions/node/v18.16.0/etc/npmrc Completed in 0ms
14 timing config:load:global Completed in 0ms
15 timing config:load:setEnvs Completed in 1ms
16 timing config:load Completed in 9ms
17 timing npm:load:configload Completed in 9ms
18 timing config:load:flatten Completed in 1ms
19 timing npm:load:mkdirpcache Completed in 1ms
20 timing npm:load:mkdirplogs Completed in 0ms
21 verbose title npm login
22 verbose argv "login"
23 timing npm:load:setTitle Completed in 0ms
24 timing npm:load:display Completed in 1ms
25 verbose logfile logs-max:10 dir:/home/arthur/.npm/_logs/2023-07-09T23_16_48_189Z-
26 verbose logfile /home/arthur/.npm/_logs/2023-07-09T23_16_48_189Z-debug-0.log
27 timing npm:load:logFile Completed in 6ms
28 timing npm:load:timers Completed in 0ms
29 timing npm:load:configScope Completed in 0ms
30 timing npm:load Completed in 29ms
31 notice Log in on https://registry.npmjs.org/
32 verbose web login before first POST
33 silly logfile start cleaning logs, removing 1 files
34 silly logfile done cleaning log files
35 http fetch POST 200 https://registry.npmjs.org/-/v1/login 173ms
36 verbose web auth got response {
36 verbose web auth   loginUrl: 'https://www.npmjs.com/login?next=/login/cli/CENSORED',
36 verbose web auth   doneUrl: 'https://registry.npmjs.org/-/v1/done?sessionId=CENSORED'
36 verbose web auth }
37 verbose web auth opening url pair
38 http fetch GET 202 https://registry.npmjs.org/-/v1/done?sessionId=npm_*** 99ms
39 verbose stack TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received undefined
39 verbose stack     at new NodeError (node:internal/errors:399:5)
39 verbose stack     at validateString (node:internal/validators:163:11)
39 verbose stack     at normalizeSpawnArguments (node:child_process:545:3)
39 verbose stack     at spawn (node:child_process:750:13)
39 verbose stack     at /home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:18:12
39 verbose stack     at new Promise (<anonymous>)
39 verbose stack     at promiseSpawn (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:17:13)
39 verbose stack     at spawnWithShell (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:123:10)
39 verbose stack     at Function.open (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:155:10)
39 verbose stack     at promptOpen (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/lib/utils/open-url-prompt.js:67:22)
40 verbose cwd /mnt/c/Users/Arthur
41 verbose Linux 4.4.0-22621-Microsoft
42 verbose node v18.16.0
43 verbose npm  v9.8.0
44 error code ERR_INVALID_ARG_TYPE
45 error The "file" argument must be of type string. Received undefined
46 verbose exit 1
47 verbose stack TypeError: Cannot read properties of undefined (reading 'stdin')
47 verbose stack     at promiseSpawn (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:60:18)
47 verbose stack     at spawnWithShell (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:123:10)
47 verbose stack     at Function.open (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:155:10)
47 verbose stack     at promptOpen (/home/arthur/.nvm/versions/node/v18.16.0/lib/node_modules/npm/lib/utils/open-url-prompt.js:67:22)
47 verbose stack     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
48 verbose cwd /mnt/c/Users/Arthur
49 verbose Linux 4.4.0-22621-Microsoft
50 verbose node v18.16.0
51 verbose npm  v9.8.0
52 error Cannot read properties of undefined (reading 'stdin')
53 verbose exit 1
54 timing npm Completed in 3109ms
55 verbose unfinished npm timer command:login 1688944608247
56 verbose code 1
57 error A complete log of this run can be found in: /home/arthur/.npm/_logs/2023-07-09T23_16_48_189Z-debug-0.log

(This also happened to me in v8. Updating to v9 did not fix it)

Expected Behavior

It logs in

Steps To Reproduce

Run npm login in the environment I'm using

Environment

jpage-godaddy commented 11 months ago

This is still happening in NPM 10 as well, using Artifactory.

0 verbose cli /home/jpage/.nvm/versions/node/v20.9.0/bin/node /home/jpage/.nvm/versions/node/v20.9.0/bin/npm
1 info using npm@10.1.0
2 info using node@v20.9.0
3 timing npm:load:whichnode Completed in 1ms
4 timing config:load:defaults Completed in 1ms
5 timing config:load:file:/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/npmrc Completed in 0ms
6 timing config:load:builtin Completed in 0ms
7 timing config:load:cli Completed in 2ms
8 timing config:load:env Completed in 0ms
9 timing config:load:file:/home/jpage/Code/switchboard-cli/.npmrc Completed in 0ms
10 timing config:load:project Completed in 4ms
11 timing config:load:file:/home/jpage/.npmrc Completed in 0ms
12 timing config:load:user Completed in 1ms
13 timing config:load:file:/home/jpage/.nvm/versions/node/v20.9.0/etc/npmrc Completed in 0ms
14 timing config:load:global Completed in 0ms
15 timing config:load:setEnvs Completed in 0ms
16 timing config:load Completed in 8ms
17 timing npm:load:configload Completed in 8ms
18 timing config:load:flatten Completed in 1ms
19 timing npm:load:mkdirpcache Completed in 0ms
20 timing npm:load:mkdirplogs Completed in 1ms
21 verbose title npm login
22 verbose argv "login"
23 timing npm:load:setTitle Completed in 0ms
24 timing npm:load:display Completed in 0ms
25 verbose logfile logs-max:10 dir:/home/jpage/.npm/_logs/2023-11-01T20_05_31_596Z-
26 verbose logfile /home/jpage/.npm/_logs/2023-11-01T20_05_31_596Z-debug-0.log
27 timing npm:load:logFile Completed in 4ms
28 timing npm:load:timers Completed in 0ms
29 timing npm:load:configScope Completed in 1ms
30 timing npm:load Completed in 23ms
31 notice Log in on https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/
32 verbose web login before first POST
33 silly logfile start cleaning logs, removing 1 files
34 silly logfile done cleaning log files
35 http fetch POST 200 https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/-/v1/login 104ms
36 verbose web auth got response {
36 verbose web auth   doneUrl: 'https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/getToken?uuid=REDACTED',
36 verbose web auth   loginUrl: 'https://REDACTED.jfrog.io/ui/auth-provider/npm?uuid=REDACTED'
36 verbose web auth }
37 verbose web auth opening url pair
38 http fetch GET 202 https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/getToken?uuid=REDACTED 24ms
39 http fetch GET 202 https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/getToken?uuid=REDACTED 24ms
40 http fetch GET 202 https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/getToken?uuid=REDACTED 21ms
41 http fetch GET 202 https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/getToken?uuid=REDACTED 25ms
42 http fetch GET 202 https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/getToken?uuid=REDACTED 22ms
43 http fetch GET 202 https://REDACTED.jfrog.io/artifactory/api/npm/node-virt/getToken?uuid=REDACTED 25ms
44 verbose stack TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received undefined
44 verbose stack     at new NodeError (node:internal/errors:406:5)
44 verbose stack     at validateString (node:internal/validators:162:11)
44 verbose stack     at normalizeSpawnArguments (node:child_process:548:3)
44 verbose stack     at spawn (node:child_process:754:13)
44 verbose stack     at /home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:18:12
44 verbose stack     at new Promise (<anonymous>)
44 verbose stack     at promiseSpawn (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:17:13)
44 verbose stack     at spawnWithShell (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:123:10)
44 verbose stack     at Function.open (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:155:10)
44 verbose stack     at promptOpen (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/lib/utils/open-url-prompt.js:67:22)
45 verbose cwd REDACTED
46 verbose Linux 5.15.90.1-microsoft-standard-WSL2
47 verbose node v20.9.0
48 verbose npm  v10.1.0
49 error code ERR_INVALID_ARG_TYPE
50 error The "file" argument must be of type string. Received undefined
51 verbose exit 1
52 verbose stack TypeError: Cannot read properties of undefined (reading 'stdin')
52 verbose stack     at promiseSpawn (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:60:18)
52 verbose stack     at spawnWithShell (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:123:10)
52 verbose stack     at Function.open (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:155:10)
52 verbose stack     at promptOpen (/home/jpage/.nvm/versions/node/v20.9.0/lib/node_modules/npm/lib/utils/open-url-prompt.js:67:22)
52 verbose stack     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
53 verbose cwd **REDACTED**
54 verbose Linux 5.15.90.1-microsoft-standard-WSL2
55 verbose node v20.9.0
56 verbose npm  v10.1.0
57 error Cannot read properties of undefined (reading 'stdin')
58 verbose exit 1
59 timing npm Completed in 5576ms
60 verbose unfinished npm timer command:login 1698869131636
61 verbose code 1
62 error A complete log of this run can be found in: /home/jpage/.npm/_logs/2023-11-01T20_05_31_596Z-debug-0.log
cg2916 commented 8 months ago

This appears to be caused by npm/promise-spawn#62.

A workaround for now is to use npm login --auth-type=legacy.

kchindam-infy commented 3 days ago

It seems like this issue may be related to the interaction between Node.js and WSL, particularly how Node.js handles shell calculations. I referenced the child process API documentation https://nodejs.org/api/child_process.html#default-windows-shell .However, if anyone else has encountered similar issues or has insights into the WSL/Node.js shell interaction in this area can dig deeper into this.