Reputation: 46940
I just created a new package.
I'm now trying to publish it to NPM for the first time like this:
ole@MKI:~/Sandbox/pli$ npm publish --access public
npm ERR! publish Failed PUT 404
npm ERR! Linux 3.13.0-93-generic
npm ERR! argv "/home/ole/.nvm/versions/v6.4.0/bin/node" "/home/ole/.nvm/versions/v6.4.0/bin/npm" "publish" "--access" "public"
npm ERR! node v6.4.0
npm ERR! npm v3.10.3
npm ERR! code E404
npm ERR! 404 Not found : @supericium/pli
npm ERR! 404
npm ERR! 404 '@supericium/pli' 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! /home/ole/Sandbox/pli/npm-debug.log
I tried updating both NodeJS and NPM to make sure that I have the latest version, which are:
ole@MKI:~/Sandbox/pli$ node --version
v6.4.0
ole@MKI:~/Sandbox/pli$ npm --version
3.10.3
Thoughts?
Upvotes: 132
Views: 135987
Reputation: 1993
It took me way too long to figure out that the scope needs to match my npm username and not my GitHub account name.
Upvotes: 4
Reputation: 385
In my case the reason was that my package name was scoped i.e. it had a supericium
, for exmaple: @supericium/package-name (or @pryansh/react-audio-gear).
But the catch here is, that you can use a supericium
to prefix your package-name only if you have an organization's account on npmjs.com and as I didn't had it so a workaround was to remove supericium
.
// BEFORE
{
"name": "@pryansh/react-audio-gear",
"version": "1.0.0",
...
// AFTER
{
"name": "react-audio-gear",
"version": "1.0.0",
Upvotes: 0
Reputation: 3024
In my case the NPM token was pasted twice.
So check your token. This error may be related to incorrect token or missing permissions for that token.
The error message and HTTP Status are misleading.
Upvotes: 0
Reputation: 11
publish to npm.pkg.github.com, this error stems from incorrect 'name' in package.json. name should be aligned to github scope. so : @
then you can go ahead and publish.
Upvotes: 1
Reputation: 15050
This error appeared for me in two cases:
When I wasn't logged in. You can check whether you are logged in or not by npm whoami
, then if not logged in npm login
.
When I didn't have right to publish to the repository. In this case make sure you are added to the organization which owns the repo.
Upvotes: 5
Reputation: 121
For me the fix seemed to be making a new "team" in the organisation and assigning myself and my package to this.
My guess is that my NPM organisation requires users to have 2FA on and two users assigned to the 'developers' group didn't have this on.
Upvotes: 0
Reputation: 3071
In my case, I had a typo when passing the otp param:
// Wrong:
npm publish --access public --opt 123456
// Correct:
npm publish --access public --otp 123456
Upvotes: -3
Reputation: 61854
In my case the problem was completely different.
I had to replace:
npm publish FOLDERNAME
with simply:
cd FOLDERNAME && npm publish
In my case I also had to manually specify the path of .npmrc
using the --userconfig
parameter:
cd myapp && npm publish -ddd --userconfig ../.npmrc
Upvotes: 0
Reputation: 23586
In my case, I believe I enabled 2FA on npmjs.com
so the publish token used in CD didn't work (should have thrown 401, but got 404).
Generating a new automation
token on npmjs.com
and updating the secret on my CD (GitHub actions) solved it.
Upvotes: 1
Reputation: 1189
Nothing worked for me, except logging in again:
npm login
Hope this helps me or someone else in the future!
Upvotes: 13
Reputation: 400
I just logged in to npm by using npm adduser
command and it worked fine.
Upvotes: 4
Reputation: 195
Just adding my two cents to the possible solutions
I was getting this error in a CI workflow, so no interactive login or things related. Existing packages were working correctly, but adding a new one wasn't, I was getting a 404. I realized that it should be something related to the new package itself, not the CI environment, and it was.
The new package was missing two fields on its package.json
, the repository
and publishConfig
fields.
Adding these two fields, it worked correctly (note that repository
field is used in its expanded form, with the directory
property)
"repository": {
"type": "git",
"url": "ssh://[email protected]/__user__/__repo-name__.git",
"directory": "packages/__new-package-name__"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}
Upvotes: 0
Reputation: 350
In my case, I got this message because the token that I was using had been revoked. I fixed it by:
export NPM_TOKEN="<token>"
in my .zshrc (or .bashrc) filesource ~/.zshrc
in the terminal.Upvotes: 6
Reputation: 2794
You need to have registered "supericium" (npm adduser
) as a username at the registry and be logged in (npm login
) to publish under that scope.
Upvotes: 131
Reputation: 12275
in my case I had to verify the email address. even when npm whoami
was telling me I was logged in fine.
Upvotes: 6
Reputation: 2532
It's solved by npm login
in my case, the error message is misleading
Upvotes: 70
Reputation: 91
You could also get this error when you change your password to NPM but you do not logout/login via your CLI. Using npm logout
and then npm login
worked for me.
Upvotes: 9
Reputation: 324
In my case, I was missing the repository
field in the package.json
of my new package that I was trying to publish.
"repository": "git://github.com/your-org/your-repo-name.git"
https://docs.npmjs.com/files/package.json#repository
Upvotes: 4
Reputation: 3462
In my case i accidentally typed https://registry.npmjs.org
instead of https://registry.npmjs.com
(.org vs .com)
Upvotes: -3
Reputation: 121
I encountered the same problem but I successfully resolved it by uninstalling the LTS version, then installing Current version along with yarn.
Upvotes: 0
Reputation: 7192
Once you successfully publish the package you may experience when you try to npm install
:
npm ERR! code E404
npm ERR! 404 Not Found: @xxx/yyy@latest
or something similar, regardless if you npm publish
was successful. In this case make sure your {main: 'file.js'}
in packages.json is there.
Ideally, you can call it index.js
if you wish to leech directly from the package so you don't get things like import * from '@xxx/yyy/file'
.
Upvotes: 1
Reputation: 4539
in my case i noticed that my npm account username in npm website is different than my npm normal user name. When i try to publish in console by login with normal username gave me this error.
publish Failed PUT 404 npm ERR! code E404 npm ERR! 404 User not found
But after login to console with account name it has published successfully
Upvotes: 1
Reputation: 6556
Came across this same error, and my issue was that the package was somehow set to "Read" access only. So I have to go to the NPM and update the package to "Read/Write" access:
1.
2.
Upvotes: 24