npm install throwing errors Error: Invalid protocol - node.js

Hi I am new to Node JS and i am trying to follow the sample in the book and when trying to do npm install i get the following error:
Any help will be highly appreciated
C:\Developer\NODE_JS>npm install
npm WARN package.json chatrooms#0.0.1 No repository field.
npm WARN package.json chatrooms#0.0.1 No README data
npm http GET http://registry.npmjs.org/socket.io
npm http GET http://registry.npmjs.org/mime
npm http GET http://registry.npmjs.org/socket.io
npm http GET http://registry.npmjs.org/mime
npm http GET http://registry.npmjs.org/socket.io
npm http GET http://registry.npmjs.org/mime
npm ERR! Error: Invalid protocol
npm ERR! at Request.init (C:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:335:51)
npm ERR! at new Request (C:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:99:8)
npm ERR! at request (C:\Program Files\nodejs\node_modules\npm\node_modules\request\index.js:55:11)
npm ERR! at RegClient.makeRequest (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:211:13)
npm ERR! at RegClient.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:117:17)
npm ERR! at null._onTimeout (C:\Program Files\nodejs\node_modules\npm\node_modules\retry\lib\retry_operation.js:32:10)
npm ERR! at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\Developer\NODE_JS
npm ERR! node -v v0.10.24
npm ERR! npm -v 1.3.21
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! C:\Developer\NODE_JS\npm-debug.log
npm ERR! not ok code 0
My Node js config is
C:\Developer\NODE_JS>npm config list
; cli configs
registry = "http://registry.npmjs.org/"
; userconfig C:\Users\<uname>\.npmrc
https-proxy = "proxy.<comp>.com:8080"
proxy = "proxy.<comp>.com:8080"
registry = "http://registry.npmjs.org/"
; builtin config undefined
prefix = "C:\\Users\\puppalap\\AppData\\Roaming\\npm"
; node bin location = C:\Program Files\nodejs\\node.exe
; cwd = C:\Developer\NODE_JS
; HOME = C:\Users\<uname>
; 'npm config ls -l' to show all defaults.

The issue got resolved after i set the following two properties:
npm config set proxy http://usr:pwd#host:port
npm config set https-proxy http://usr:pwd#host:port

Issue is due to windows http_proxy environment variable being set; while I don't use a proxy.
Following command in command prompt will display, if http_proxy is set;
set http
If set removed the variable with below command and problem solved.
set http_proxy=
Above command will remove the http_proxy from the current
command line. However, if you need to permanently remove it, just
remove it from System Properties>Advanced Tab>Environment Variables
dialog box.

Just want to share a method,the way i followed to get it resolved,
My error: was ERR! Error: Invalid protocol : myusername:
[username of the previous proxy]
where my .npmrc file
contains registry="http://registry.npmjs.org/"
and other variables[prefix,cwd,home]
As i am not behind the proxy, removed proxy variables
still got the same error
when looked into
request.js[/usr/lib/node_modules/npm/node_modules/request/request.js]
file it is using the old proxy values
Hence , i added the line in init() of request.js
self.proxy="http://registry.npmjs.org/" //at the start of method
then it started working!!!
PS: Once after install command,Removed this line and it continued to work.
Try this , if no other options are working

If you're on a Linux box make sure you set the following variables:
export http_proxy="http://yourCompanyProxy:portNumber"
export https_proxy="http://yourCompanyProxy:portNumber"
export HTTP_PROXY="http://yourCompanyProxy:portNumber"
export HTTPS_PROXY="http://yourCompanyProxy:portNumber"

Related

npm ERR! Cannot read property 'path' of null

**C:\Users\Abc>npm install -g
npm ERR! addLocal Could not install C:\Users\Abc
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\Program Files\nodejs\node.exe"
"C:\Users\Abc\AppData\Ro
aming\npm\node_modules\npm\bin\npm-cli.js" "install" "-g"
npm ERR! node v7.2.1
npm ERR! npm v4.0.5
npm ERR! Cannot read property 'path' of null
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! https://github.com/npm/npm/issues
npm ERR! Please include the following file with any support request:
npm ERR! C:\Users\Abc\npm-debug.log**
i have reinstall node with version 7.2.1
after every time this occurs when i download any package
need suggestion related to null path error
I ran into this issue while installing gulp
My NPM and Node Versions are:
node v7.7.4
npm v4.1.2
In npm version 4x, https client certificates were made required rather than optional. Details are in their github area.
Long story short, what helped for me was running the following command:
npm config set strict-ssl false
Once this was done, running the command
npm install gulp -g
Worked like a charm for me!
If you are working behind proxy, you need to set proxy for nodejs
npm config set proxy http://proxy_host:port
npm config set https-proxy http://proxy_host:port
Hope it Helps.. :)
npm install command is used to install packages.
Reason for your error :
You don't have any package.json in your current working directory.
Also, you didn't provide any package name to install from.
Tips :
Check out https://docs.npmjs.com/cli/install for more details.
Never use -g (install dependency globally unless you intend to).

error while trying to install npm atob

I was trying to install npm atob in my project;but suddenly it is showing an error now as:
Linux 2.6.23.17-88.fc7
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "atob"
npm ERR! node v5.6.0
npm ERR! npm v3.8.8
npm ERR! code CERT_NOT_YET_VALID
npm ERR! certificate is not yet valid
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /home/www/project/npm-debug.log
but when i searched the most of them have answered as "Fix your system time"
try to correct your system time before to get a valid certification.
Else try to change the version of nodeJs
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
The 'btoa-atob' module does not export a programmatic interface, it only provides command line utilities.
If you need to convert to Base64 you could do so using Buffer:
console.log(new Buffer('Hello World!').toString('base64'));
Reverse (assuming the content you're decoding is a utf8 string):
console.log(new Buffer(b64Encoded, 'base64').toString());
The error code is CERT_NOT_YET_VALID -certificate is not yet valid, and it refers to ssl certificate.
This should fix this error
$ npm config set strict-ssl false
$ npm config set unsafe-perm true
$ npm config set registry http://registry.npmjs.org/

Node.js ECONNREFUSED when trying to install packages

I'm working the learnyounode tutorial to learn node.js. I'm getting an error any time I try install a package.
npm ERR! Linux 4.2.0-c9
npm ERR! argv "/home/ubuntu/.nvm/versions/node/v4.1.1/bin/node" "/home/ubuntu/.nvm/versions/node/v4.1.1/bin/npm" "install" "through2-map" "--save"
npm ERR! node v4.1.1
npm ERR! npm v3.7.5
npm ERR! code ECONNREFUSED
npm ERR! errno ECONNREFUSED
npm ERR! syscall connect
npm ERR! Error: connect ECONNREFUSED 127.0.0.1:15443
npm ERR! at Object.exports._errnoException (util.js:837:11)
npm ERR! at exports._exceptionWithHostPort (util.js:860:20)
npm ERR! at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1060:14)
npm ERR! { [Error: connect ECONNREFUSED 127.0.0.1:15443]
npm ERR! code: 'ECONNREFUSED',
npm ERR! errno: 'ECONNREFUSED',
npm ERR! syscall: 'connect',
npm ERR! address: '127.0.0.1',
npm ERR! port: 15443 }
npm ERR!
npm ERR! If you are behind a proxy, please make sure that the
npm ERR! 'proxy' config is set properly. See: 'npm help config'
npm ERR! Please include the following file with any support request:
npm ERR! /home/ubuntu/workspace/npm-debug.log
I also did npm config ls to see if there was anything out of the ordinary with my configuration but really I don't know what I'm looking for. Can someone help me figure out how to fix this error so that I can install packages.
; cli configs
user-agent = "npm/3.7.5 node/v4.1.1 linux x64"
; userconfig /home/ubuntu/.config/how-to-npm/npmrc
//localhost:15443/:always-auth = false
//localhost:15443/:email = "rawledjuglal#gmail.com"
//localhost:15443/:username = "rawlejuglal"
; node bin location = /home/ubuntu/.nvm/versions/node/v4.1.1/bin/node
; cwd = /home/ubuntu/workspace
; HOME = /home/ubuntu
; "npm config ls -l" to show all defaults.
Set your NPM registry back to registry.npmjs.org:
npm set registry https://registry.npmjs.org
your npmrc file is trying to send you to a registry host on localhost:15443, delete those three lines with // from your npmrc file and try npm installing again. This should send you to the npm registry, where that package exists.
I also fetch is problem. I hope following information may help someone else like me.
For me, the reason was .npmrc where registry was set to http://localhost:15443/
.npmrc is one of sources from where npm gets its config settings. You will get more information about .npmrc file from
here
How I troubleshoot
I have used command npm config ls -l that show npm configuration list where I found that registry https://registry.npmjs.org/ is overridden.
Part of my configuration
; project config /home/sumon/projects/codecamp-node/.npmrc
registry = "http://localhost:15443/"
userconfig = "/home/sumon/.config/how-to-npm/npmrc"
; userconfig /home/sumon/.config/how-to-npm/npmrc
//localhost:15443/:always-auth = false
//localhost:15443/:email = "hasanuzzaman.sumon#gmail.com"
//localhost:15443/:username = "engr.hasanuzzaman"
; registry = "https://registry.npmjs.org/" (overridden)
From above you will see that project config indicating a .npmrc that is on my project's root folder.
In unix system file that start with . are hidden file. To see hidden file on unix you can use ctl+h of ls -a from terminal.
How to solve this problem
Remove registry = http://localhost:15443/ from .npmrc file if you don't need this
set registry option like following
npm install your_package --registry=https://registry.npmjs.org
It seems require init once again:
Go to package directory (where package.json is located)
Run: npm init
Answer all questions in command line
Go to browser and go 127.0.0.1:15443
As successful result should get: { error: "missing" }

SSL Error: CERT_UNTRUSTED on dotCloud

I'm seeing the following error when deploying a Node.js service on dotCloud:
23:03:59.958870: [www] npm ERR! Error: SSL Error: CERT_UNTRUSTED
23:03:59.959405: [www] npm ERR! at ClientRequest.<anonymous> (/opt/node/v0.8.3/lib/node_modules/npm/node_modules/request/main.js:440:26)
23:03:59.959736: [www] npm ERR! at ClientRequest.g (events.js:185:14)
23:03:59.960068: [www] npm ERR! at ClientRequest.EventEmitter.emit (events.js:88:17)
23:03:59.960399: [www] npm ERR! at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1445:7)
23:03:59.968852: [www] npm ERR! at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23)
23:03:59.969361: [www] npm ERR! at CleartextStream.socketOnData [as ondata] (http.js:1356:20)
23:03:59.969696: [www] npm ERR! at CleartextStream.CryptoStream._push (tls.js:396:27)
23:03:59.970028: [www] npm ERR! at SecurePair.cycle (tls.js:750:20)
23:03:59.970359: [www] npm ERR! at EncryptedStream.CryptoStream.write (tls.js:131:13)
23:03:59.970694: [www] npm ERR! at Socket.ondata (stream.js:38:26)
23:03:59.971012: [www] npm ERR! If you need help, you may report this log at:
23:03:59.971299: [www] npm ERR! <http://github.com/isaacs/npm/issues>
23:03:59.971587: [www] npm ERR! or email it to:
23:03:59.971876: [www] npm ERR! <npm-#googlegroups.com>
23:03:59.972208: [www]
23:03:59.972543: [www] npm ERR! System Linux 2.6.38.2-grsec-dotcloud-ec2
23:03:59.972852: [www] npm ERR! command "node" "/opt/node/default/bin/npm" "install"
23:03:59.973251: [www] npm ERR! cwd /home/dotcloud/rsync-1388703750593/app
23:03:59.973584: [www] npm ERR! node -v v0.8.3
23:03:59.973914: [www] npm ERR! npm -v 1.1.44
23:04:00.331100: [www] npm ERR!
23:04:00.331630: [www] npm ERR! Additional logging details can be found in:
23:04:00.331955: [www] npm ERR! /home/dotcloud/rsync-1388703750593/app/npm-debug.log
23:04:00.332280: [www] npm ERR! not ok code 0
23:04:01.058860: [www] -- Build failed: "npm install" failed with return code 1
Either update your node/npm (preferred), or run npm config set ca null.
They changed certificate at npmjs.org recently because old one is expired, but your npm has old one hardcoded into it.
PS: setting strict-ssl to false is an extremely bad idea, unless you know what are you doing.
I found the following SO question that seems to suggest some of the npm packages might be using self-signed certificates, causing the error. It seems like the root fix should be with the package itself, using a registered certificate. However, as a workaround for dotCloud, you could use a pre-build hook to run the following command npm config set strict-ssl false which seemed to work in my testing.
To use this approach you'd do the following:
1) add a prebuild directive to your dotcloud.yml file. Your dotcloud yml file might look like the following:
www:
type: nodejs
approot: app
processes:
app: node app.js
config:
node_version: v0.8.x
prebuild: ./prebuild.sh # <-- prebuild directive
redis:
type: redis
2) add the prebuild.sh file to whereever your application root is. If you don't use an app root, this is just the root of your project.
3) add the following to your prebuild.sh file
#!/bin/bash
npm config set strict-ssl false
According to the npm blog, the preferred solution is to re-install npm like this:
#!/bin/bash
set -e
npm install npm#">1.4.0" -g --ca=null
That will also work on the dotCloud platform. You can use that snippet as your prebuild.sh script and then the rest of your packages should install fine. The #">1.4.0" syntax just makes it so once you have a new enough version installed, you don't keep updating unnecessarily. If you want something newer, feel free to change it. If you always want the latest version of npm, feel free to remove #">1.4.0" altogether.

npm install not working

I just started learning node.js and i have installed node.js along with npm module manager.
I have created a package.json file and from the root directory iam trying to execute npm install command, instead of creating npm_modules folder it throws error like this:
C:\Users\username\Desktop\nodetest>npm install
npm WARN package.json backbone-library#0.0.1 No README.md file found!
npm http GET https://registry.npmjs.org/mongoose
npm http GET https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/path
npm http GET https://registry.npmjs.org/path
npm http GET https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/mongoose
npm http GET https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/path
npm http GET https://registry.npmjs.org/mongoose
npm ERR! Error: connect ETIMEDOUT
npm ERR! at errnoException (net.js:863:11)
npm ERR! at Object.afterConnect [as oncomplete] (net.js:854:19)
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-#googlegroups.com>
npm ERR! System Windows_NT 6.1.7600
npm ERR! command "D:\\Program Files\\nodejs\\\\node.exe" "D:\\Program Files\\no
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\Users\username\Desktop\nodetest
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! syscall connect
npm ERR! code ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! C:\Users\username\Desktop\nodetest\npm-debug.log
npm ERR! not ok code 0
Iam using Windows 7 OS.
Any ideas ?
Thanks,
Srinivas
This will probably solve your problem:
npm config set proxy proxy-url:port (http:\\proxy-name:port)
npm config set https-proxy proxy-url:port
It was a stuck step on my side,
the following syntax worked for me:
npm config set proxy http:/myproxyserver:port
best regards :)
You may need to use the windows "run as" command (which is equivalent to the *nix "sudo" command) in order to have the correct privileges on your machine.
This link should be helpful: https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows
finally i came to know that my company laptop has proxy restrictions.Once i got the approval for proxy removal it worked.
But still ppl, who ever facing proxy issue in npm install,can try the following method.
Go to C:\Users\YourUserName
Create a file named .npmrc (no need of any prefixname just .npmrc)
Inside that file type the following
proxy = username:password#ip:port (add http:// before username)
That's all.It is perfectly working for me....
The traceroute command will usually tell you where a connection fails and would have lead you straight to the corporate proxy in this case.
Adding to the selected answer
a) "npm config set proxy proxy-url:port (http:\proxy-name:port)
b) npm config set https-proxy proxy-url:port"
make sure you add "http:\\" to your proxy name, and packages downloaded from npm use ssl so try the second option for sure.
If you are working behind a proxy, configure it:
npm config set proxy http://login:pass#host:port
Check the value of your proxy configuration:
npm config get http-proxy
Try again to get your package...

Resources