npm seems to ignore my private module and 404 against the public registry
Asked Answered
P

2

11

Maybe someone has seen this before... I've got a private module that I want to include in my app. I've referenced it as a tarball on Gemfury, and everything works fine locally (always the way) over multiple versions of the library, but "npm install" on my Joyent box outputs the error below.

NPM seems to be successfully pulling the module down, and then trying (and failing) to look it up on the registry.

I assume I'm doing something stupid. Any ideas what it is?

Note:

I've also tried referencing the module via a git URL in package.json. SSH seems to connect, as it asks me whether I trust the IP & RSA fingerprint for github.com, but then NPM just hits the registry again and gets a 404. I'm guessing it's something to do with the package, but can't reproduce locally.

npm http GET https://npm.fury.io/--token--/richmarr/cake-lib/-/latest.tgz
npm http 200 https://npm.fury.io/--token--/richmarr/cake-lib/-/latest.tgz
npm http GET https://registry.npmjs.org/cake-lib/0.0.10
npm http 404 https://registry.npmjs.org/cake-lib/0.0.10
npm ERR! 404 'cake-lib' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.
npm ERR! System SunOS 5.11
npm ERR! command "/opt/nodejs/v0.10.21/bin/node" "/home/node/local/nodejs/bin/npm" "install" "https://npm.fury.io/--token--/richmarr/cake-lib/-/latest.tgz"
npm ERR! cwd /home/node/node-service/releases/2013-11-27T22-18-23.324752929
npm ERR! node -v v0.10.21
npm ERR! npm -v 1.3.11
npm ERR! code E404
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/node/node-service/releases/2013-11-27T22-18-23.324752929/npm-debug.log
npm ERR! not ok code 0

package.json for the app is this:

{
  "name": "application-name",
  "version": "0.0.3",
  "private": true,
  "scripts": {
    "start": "node app.js",
    "test": "mocha"
  },
  "dependencies": {
    "express": "3.2.1",
    "sizlate": "~0.8.3",
    "newrelic": "~0.11.0",
    "passport": "~0.1.17",
    "passport-twitter": "~1.0.2",
    "passport-local": "~0.1.6",
    "connect-flash": "~0.1.1",
    "passport-http": "~0.2.2",
    "helmet": "~0.1.0",
    "express-validator": "~0.8.0",
    "async": "~0.2.9",
    "cake-lib": "https://npm.fury.io/--token--/richmarr/cake-lib/-/latest.tgz"
  },
  "engines": {
    "node": "0.10.21"
  },
  "devDependencies": {
    "mocha": "~1.13.0"
  }
}

package.json of the library:

{
  "name": "cake-lib",
  "version": "0.0.10",
  "private": true,
  "description": "Data & connectivity lib",
  "main": "index.js",
  "scripts": {
    "test": "mocha",
    "pub": "npm version patch; npm pack; npm run upload",
    "upload": "curl -F package=@cake-lib-$npm_package_version.tgz https://push.fury.io/--token--; rm *.tgz"
  },
  "dependencies": {
    "scrypt": "~1.7.3",
    "mysql": "~2.0.0-alpha9",
    "awssum": "~1.1.1",
    "awssum-amazon": "~1.1.1",
    "awssum-amazon-ses": "~1.0.0",
    "stripe": "~1.3.0",
    "async": "~0.2.9",
    "apn": "~1.4.2",
    "uuid": "~1.4.1"
  },
  "repository": {
    "type": "git",
    "url": "git://github.com/richmarr/cake-lib.git"
  },
  "author": "",
  "bugs": {
    "url": "https://github.com/richmarr/cake-lib/issues"
  },
  "devDependencies": {
    "mocha": "~1.13.0"
  }
}
Poop answered 28/11, 2013 at 10:25 Comment(1)
This is a bug in npm. I suggest first test with the latest version if didn't exist, then create a bug report.Vyky
M
1

This is a case of bad defaults. Use npm config the reset the registry URL:

npm config set registry https://npm.fury.io/
Manon answered 11/4, 2014 at 0:53 Comment(3)
I referenced a tarball module on Gemfury, which is being pulled down successfully. The problem looks like it's happening after Gemfury is out of the picture. Can you elaborate on why you think npm needs to be pointing at Gemfury's registry?Poop
@RichardMarr I had a similar issue. That fixed it for me.Manon
A local installed private package (eg, anyone using a monorepo) shouldn't need to require a second copy on a private registry.Barter
U
0

TL;DR
run npm c delete registry
If you are unsure whether or not you want to run the above command then run npm c get registry to see the value set for registry. It'll print out the value of key registry & then you can decide if you want to delete that or not.

Explanation:
I had the same issue where I had pointed my default npm registry to my company's registry. I solved the issue by deleting my npm default registry key value, using the above delete command.

Notes: c in npm c get registry is short for config
run npm c or npm config to see the available options

Unsocial answered 18/12, 2020 at 15:26 Comment(1)
In my case it says https://registry.npmjs.org/ which I assume is correct because what else would it be?Batts

© 2022 - 2024 — McMap. All rights reserved.