how-to-npm: npm publish has resulted in error "You need to authorize this machine using `npm adduser`"

Hi,

In the 08 Publish chapter I was not able to npm publish against the .npmrc local environment. However it worked when the .npmrc file removed and with a connection to https://www.npmjs.com/. None of the following chapters worked correctly either against this local environment, and all worked well again without the .npmrc file and with a connection to https://www.npmjs.com/.

I once went through the 02 Login chapter smoothly and npm whoami returned the correct info. At this point running npm whoami also results in authentication errors.

Looking at the path that userconfig in .npmrc pointed to (userconfig = /Users/xiaoli.shen/.config/how-to-npm/npmrc), there is no such file or folder named npmrc, which might be the reason for the authentication errors.

I’m using version 2.0.0 of how-to-npm and on Mac OS 10.9.5

My npm-debug.log is as follows:

0 info it worked if it ends with ok
1 verbose cli [ 'node', '/usr/local/bin/npm', 'adduser' ]
2 info using npm@2.11.1
3 info using node@v0.12.4
4 verbose adduser before first PUT { _id: 'org.couchdb.user:alabebop',
4 verbose adduser   name: 'alabebop',
4 verbose adduser   password: 'XXXXX',
4 verbose adduser   email: 'alabebop@gmail.com',
4 verbose adduser   type: 'user',
4 verbose adduser   roles: [],
4 verbose adduser   date: '2015-06-11T09:07:53.405Z' }
5 verbose request uri http://localhost:15443/-/user/org.couchdb.user:alabebop
6 verbose request new user, so can't send auth
7 info attempt registry request try #1 at 11:07:53
8 verbose request id 8f19ff7f3662cb4c
9 http request PUT http://localhost:15443/-/user/org.couchdb.user:alabebop
10 info retry will retry, error on last attempt: Error: connect ECONNREFUSED
11 info attempt registry request try #2 at 11:08:03
12 http request PUT http://localhost:15443/-/user/org.couchdb.user:alabebop
13 info retry will retry, error on last attempt: Error: connect ECONNREFUSED
14 info attempt registry request try #3 at 11:09:03
15 http request PUT http://localhost:15443/-/user/org.couchdb.user:alabebop
16 verbose request invalidating /Users/xiaoli.shen/.npm/localhost_15443/-/user/org.couchdb.user_3Aalabebop on PUT
17 verbose adduser back [ { [Error: connect ECONNREFUSED]
17 verbose adduser     code: 'ECONNREFUSED',
17 verbose adduser     errno: 'ECONNREFUSED',
17 verbose adduser     syscall: 'connect' },
17 verbose adduser   undefined,
17 verbose adduser   undefined ]
18 verbose stack Error: connect ECONNREFUSED
18 verbose stack     at exports._errnoException (util.js:746:11)
18 verbose stack     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
19 verbose cwd /Users/xiaoli.shen/projects/nodeschool/how-to-npm
20 error Darwin 13.4.0
21 error argv "node" "/usr/local/bin/npm" "adduser"
22 error node v0.12.4
23 error npm  v2.11.1
24 error code ECONNREFUSED
25 error errno ECONNREFUSED
26 error syscall connect
27 error Error: connect ECONNREFUSED
27 error     at exports._errnoException (util.js:746:11)
27 error     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
27 error  { [Error: connect ECONNREFUSED]
27 error   code: 'ECONNREFUSED',
27 error   errno: 'ECONNREFUSED',
27 error   syscall: 'connect' }
28 error If you are behind a proxy, please make sure that the
28 error 'proxy' config is set properly.  See: 'npm help config'
29 verbose exit [ 1, true ]

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 35 (1 by maintainers)

Commits related to this issue

Most upvoted comments

It go resolved!!!

  1. Switch to Login module (by typing “how-to-npm” on command line)
  2. Type “npm adduser” to login
  3. Type “npm whoami” to confirm if logged in
  4. Switch back to the package at which you are getting error(my case it was Publish Again)
  5. Type “npm publish”
  6. Done

My issue was that I had the publishConfig object specified in package.json which defined an invalid URL (some private registry). Had to set it up like this:

  "publishConfig": {
    "registry": "https://registry.npmjs.org/"
  },

Does not work!

npm adduser
Username: xxxxxx
Password:
Email: (this IS public) xxxxxx@hotmail.com
Logged in as xxxxx on https://registry.npmjs.org/.
➜  lib1 npm publish
npm ERR! code ENEEDAUTH
npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

@AnandWalvekar That workaround didn’t work for me. Still fails to publish, even when npm whomi correctly returns my username.

Getting the following output:

npm ERR! publish Failed PUT 404
npm ERR! Windows_NT 6.3.9600
npm ERR! argv "node" "C:\\Users\\USERNAME\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "publish"
npm ERR! node v0.12.5
npm ERR! npm  v2.13.3
npm ERR! code E404

npm ERR! 404 missing : @myUser/how-to-npm
npm ERR! 404
npm ERR! 404 '@myUser/how-to-npm' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Users\USERNAME\Documents\node_code\nodeschool.io\how-to-npm\npm-debug.log

My issue was that I had the publishConfig object specified in package.json which defined an invalid URL (some private registry). Had to set it up like this:

  "publishConfig": {
    "registry": "https://registry.npmjs.org/"
  },

yes, when i delete publishConfig in package.json,I can publish it normally。

In my ci script, I have resolved this issue using a _auth token and setting up the user email like this :

npm config set _auth $NPM_REGISTRY_TOKEN && npm config set registry $NPM_REGISTRY_URL && npm config set always-auth=true && npm config set email=email@email.com

I keep getting the same error even when I successfully login. npm whoam give me the correct user but it keep failing no matter what.

@renatoathaydes

  1. What OS u have?
  2. what is ur .npmrc content or
  3. what is output of npm config list?

I see, you have https://registry.npmjs.org/ as registry, so I assume npm get registry will show it. have you tried to change to http://registry.npmjs.org/ (http).

  1. strict-ssl = false set?
  2. Are u under/behind the some proxy/vpn?