cordova/phonegap: command not found, elementaryOS Luna - node.js

I've ran into some problem with installing cordova and phonegap.
When i try to run sudo npm install -g cordova (same with phonegap). I got this result (for cordova)
/home/tomek/npm/bin/cordova -> /home/tomek/npm/lib/node_modules/cordova/bin/cordova
cordova#3.5.0-0.2.7 /home/tomek/npm/lib/node_modules/cordova
├── q#0.9.7
├── underscore#1.4.4
├── nopt#2.2.1 (abbrev#1.0.5)
└── cordova-lib#0.21.7 (osenv#0.0.3, properties-parser#0.2.3, bplist-parser#0.0.5, mime#1.2.11, semver#2.0.11, dep-graph#1.1.0, plist-with-patches#0.5.1, shelljs#0.1.4, xcode#0.6.6, npmconf#0.1.16, elementtree#0.1.5, glob#3.2.11, rc#0.3.0, tar#0.1.19, request#2.22.0, npm#1.3.4, cordova-js#3.6.2)
But when I later try to run cordova command it simply doesn't find this command.
What do I do wrong, and why it doesn't work?

You may have your nodes confused, try the following in terminal:
$ sudo ln -s /usr/bin/nodejs /usr/local/bin/node
This install guide may help you: http://software-issues.blogspot.co.uk/2014/04/v-behaviorurldefaultvmlo.html, with your distro being ubuntu based you should have no problem following this. (Beware I forgot to sudo the npm command in the guide, must get around to editing that).

Related

express: command not found , has worked before?

I'm working on a OSX 10.10.4, I have worked with node.js and express before on this computer.
But now when I want to start a new application, the computer won't recognize the command express anymore.
I've tried installing it with all these commands:
- npm install express
- npm install -g express
- npm install express -g
- sudo npm install -g express
- sudo npm install express -g
- npm install express-generator
- npm install -g express-generator
- npm install express-generator -g
- sudo npm install -g express-generator
- sudo install express-generator -g
- sudo npm install -g express-generator#3
- sudo npm install -g express-generator#4
But it still doesn't recognize the command express
This is the output when I install without the -g
npm install express
express#4.13.3 node_modules/express
├── escape-html#1.0.2
├── merge-descriptors#1.0.0
├── cookie#0.1.3
├── array-flatten#1.1.1
├── utils-merge#1.0.0
├── cookie-signature#1.0.6
├── methods#1.1.1
├── fresh#0.3.0
├── range-parser#1.0.2
├── vary#1.0.1
├── path-to-regexp#0.1.7
├── content-type#1.0.1
├── etag#1.7.0
├── parseurl#1.3.0
├── content-disposition#0.5.0
├── serve-static#1.10.0
├── depd#1.0.1
├── qs#4.0.0
├── finalhandler#0.4.0 (unpipe#1.0.0)
├── on-finished#2.3.0 (ee-first#1.1.1)
├── debug#2.2.0 (ms#0.7.1)
├── proxy-addr#1.0.8 (forwarded#0.1.0, ipaddr.js#1.0.1)
├── type-is#1.6.6 (media-typer#0.3.0, mime-types#2.1.4)
├── accepts#1.2.12 (negotiator#0.5.3, mime-types#2.1.4)
└── send#0.13.0 (destroy#1.0.3, statuses#1.2.1, ms#0.7.1, mime#1.3.4, http-errors#1.3.1)
and when I install with the -g
sudo npm install -g express-generator
Password:
/Users/Maiteh/.node/bin/express -> /Users/Maiteh/.node/lib/node_modules/express-generator/bin/express
express-generator#4.13.1 /Users/Maiteh/.node/lib/node_modules/express-generator
├── sorted-object#1.0.0
├── commander#2.7.1 (graceful-readlink#1.0.1)
└── mkdirp#0.5.1 (minimist#0.0.8)
I have tried some other stuff like the PATH and nodejs-legacy, but none of them work.
With the sudo apt-get install nodejs-legacy the computer doesn't find the command apt-get.
The reason I got express:command not found after I installed was because my $PATH didn't know where express was.
To anyone wanting to install the express command line tools I did this
sudo npm install express-generator -g
which resulted in
/usr/local/share/npm/bin/express -> /usr/local/share/npm/lib/node_modules/express-generator/bin/express
express-generator#4.13.1 /usr/local/share/npm/lib/node_modules/express-generator
├── sorted-object#1.0.0
├── commander#2.7.1 (graceful-readlink#1.0.1)
└── mkdirp#0.5.1 (minimist#0.0.8)
when I tried express --version I got a command not found
Open your bash_profile from terminal with open ~/.bash_profile
After that add the path you got after you installed express, in my case it was
/usr/local/share/npm/lib/node_modules/express-generator/bin/express
Add this to your bash_profile
export PATH=/usr/local/share/npm/lib/node_modules/express-generator/bin:$PATH
Save the file and go back to terminal. Enter hash -r and then quit terminal and start it again.
Now if you try express --version for example you should see that the command line tools are working.
There's kind of a mishmash of problems you're describing here, so I'll try to address them one at a time.
Express is a popular framework for node.js. The typical way to add it to your project is to do npm install --save express and then it will save it into your package.json file and install it into node_modules. Adding -g to that command would attempt to install it globally, but that's not how express is used. Express is used on a per-project basis. See their website for details.
In the big list of commands you've run, you mention express-generator. Express-generator is a tool that lets you quickly build out some boilerplate to make starting an express project a bit easier. Since express-generator is meant to be run globally and not inside a project, you DO install it with the -g flag. See their website for details on use and installation.
You're trying to install some more node stuff with the apt-get command. That command is used for package management on Linux (typically Ubuntu/Debian) machines. Mac OS X doesn't come with it (and you absolutely don't need it). Any instructions that mention running apt-get are not targeted towards Mac users.
Essentially, I don't think you have a problem, the logs you show are exactly what I'd expect to see. Generate a boilerplate project with express-generator and you should be all set to start working on your express project. Good luck!

Strange npm behavior when installing packages like grunt

I run the following command in my bash and I get the related results:
merianos#merianos-desktop:~$ sudo npm install -g grunt-cli
/usr/local/bin/grunt -> /usr/local/lib/node_modules/grunt-cli/bin/grunt
grunt-cli#0.1.13 /usr/local/lib/node_modules/grunt-cli
├── resolve#0.3.1
├── nopt#1.0.10 (abbrev#1.0.7)
└── findup-sync#0.1.3 (lodash#2.4.2, glob#3.2.11)
and
merianos#merianos-desktop:~$ grunt
/usr/bin/env: node: No such file or directory
I also have try to install bower and gulp but again, when I try to execute them, I get a message related to the grunt above.
Can someone please help me ?
Just to know, I just installed Ubuntu 15.04. I don't know if that helps :)
Ubuntu package nodejs provide a binary as a /usr/bin/nodejs, not a /usr/bin/node, so most of cli tools can't find it. To solve the problem you need to make a symlink:
sudo ln -sT /usr/bin/nodejs /usr/bin/node

Can no longer run any node packages after reinstall

My node suddenly stopped working so I removed everything and installed node with homebrew.
Now I cant install grunt, nodemon, bower etc.
Pers-MacBook-Air:backendMD perstrom$ sudo npm install -g grunt-cli
Password:
/Users/perstrom/.node/bin/grunt -> /Users/perstrom/.node/lib/node_modules/grunt-cli/bin/grunt
grunt-cli#0.1.13 /Users/perstrom/.node/lib/node_modules/grunt-cli
├── resolve#0.3.1
├── nopt#1.0.10 (abbrev#1.0.5)
└── findup-sync#0.1.3 (lodash#2.4.1, glob#3.2.11)
Pers-MacBook-Air:backendMD perstrom$ grunt --version
bash: grunt: command not found
Pers-MacBook-Air:backendMD perstrom$
What can be wrong? How do I debug this?
Try to expend your path (make sure this folder contains the bins):
export PATH=/Users/perstrom/.node/bin:$PATH

Cannot use installed packages with npm

Edit: Adding ~/npm/bin to path with PATH=$PATH:~/npm/bin helped, thank you Joachim Isaksson
EDIT:
Seems like i cannot install any packages with npm. After sucessfully installing them, i cannot use them with the assigned commands in the package. "No command '' found".
node -v
v0.11.14
npm -v
2.0.0
At ubuntu machine
It seems like i cannot install the resume-cli module, found here with using npm. Even though it installs without errors, it does not understand the basic commands after installing. Could it be a problem with the warning, showed under?
sudo npm install -g resume-cli
i get
npm WARN engine html-to-text#0.0.8: wanted: {"node":"~0.8.0"} (current: {"node":"0.10.32","npm":"1.4.28"})
Then
/home/bjornasm/npm/bin/resume -> /home/bjornasm/npm/lib/node_modules/resume-cli/index.js
resume-cli#0.3.10 /home/bjornasm/npm/lib/node_modules/resume-cli
├── cli-spinner#0.1.5
├── char-spinner#1.0.1
├── commander#2.3.0
├── colors#0.6.2
├── open#0.0.5
├── chalk#0.4.0 (has-color#0.1.7, ansi-styles#1.0.0, strip-ansi#0.1.1)
├── async#0.9.0
├── read#1.0.5 (mute-stream#0.0.4)
├── terminal-menu#0.3.2 (inherits#2.0.1, charm#0.1.2, resumer#0.0.0)
├── superagent#0.18.2 (extend#1.2.1, qs#0.6.6, methods#1.0.1, cookiejar#2.0.1, component-emitter#1.1.2, reduce-component#1.0.1, mime#1.2.11, debug#1.0.4, readable-stream#1.0.27-1, form-data#0.1.3, formidable#1.0.14)
├── resume-to-text#0.0.15 (mustache#0.8.2, html-to-text#0.0.8)
├── resume-to-html#0.0.21 (gravatar#1.0.6, resume-to-markdown#0.0.14, marked#0.3.2, mustache#0.8.2, lodash#2.4.1)
├── jsonlint#1.6.2 (nomnom#1.8.0, JSV#4.0.2)
└── resume-schema#0.0.15 (z-schema#2.4.10)
Then when running the following
resume --help
i get
resume: command not found
Anyone familiar with this?
Below are the steps to install a given release from source
NOTE - this installs nodejs which gives you both node as well as npm, they come together per release.
to start fresh remove prior node.js and npm installs as well as these :
sudo mv ~/.npmrc ~/.npmrc_ignore
sudo mv ~/.npm ~/.npm_ignore
sudo mv ~/tmp ~/tmp_ignore
sudo mv ~/.npm-init.js ~/.npm-init.js_ignore
to install nodejs and npm as yourself NOT root do these commands (OSX/linux) :
export NODE_PARENT=${HOME}/bin_0_10_32
mkdir ${NODE_PARENT}
download source from : http://nodejs.org/download/
cd node-v0.xxxx
./configure --prefix=${NODE_PARENT}/nodejs
make -j8
make install # IMPORTANT this is NOT using sudo
# not wanted since installing into $USER owned $NODE_PARENT
which puts it into dir defined by above --prefix
export PATH=${NODE_PARENT}/nodejs/bin:$PATH
define environment variable NODE_PATH so node can find dir for modules otherwise
npm install xxx will put newly installed module into current dir :
export NODE_PATH=${NODE_PARENT}/nodejs/lib/node_modules
when you use syntax : npm install -g some_cool_module
the -g for global installs it into dir $NODE_PATH and not your $PWD
nodejs install gives you npm as well :
ls -la ${NODE_PARENT}/nodejs/bin
Subsequent modules you install using global flag -g will automagically put their ~binaries~ into above bin dir ... like browserify
Now put above three export xxx=yyy
commands into your ~/.bashrc or some such so your environment is setup

PhoneGap - Unable to install via npm, phonegap does not exist

I am trying to download and run PhoneGap. I have tried on 3 machines (2 mac, 1 windows), and I can't help but feel as though I am doing something wrong.
I have nodeJS (v0.10.13) and NPM (1.3.2) installed to the latest versions, using homebrew.
To install PhoneGap I do the following via commandline:
sudo npm install -g phonegap
NPM goes on it's merry way downloading a ton of packages and installing all without warning or error.
After install I get the following, which I assume is correct:
npm http 200 https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz
/usr/local/share/npm/bin/phonegap -> /usr/local/share/npm/lib/node_modules/phonegap/bin/phonegap.js
phonegap#3.0.0-0.14.0 /usr/local/share/npm/lib/node_modules/phonegap
├── pluralize#0.0.4
├── colors#0.6.0-1
├── semver#1.1.0
├── qrcode-terminal#0.9.4
├── shelljs#0.1.4
├── optimist#0.6.0 (wordwrap#0.0.2, minimist#0.0.1)
├── node-static#0.7.0 (colors#0.6.0, mime#1.2.9)
├── phonegap-build#0.8.3 (qrcode-terminal#0.8.0, optimist#0.3.7, shelljs#0.0.9, phonegap-build-api#0.3.3)
├── prompt#0.2.11 (revalidator#0.1.5, pkginfo#0.3.0, read#1.0.5, winston#0.6.2, utile#0.2.0)
└── cordova#3.0.0 (ncallbacks#1.0.0, colors#0.6.0, open#0.0.3, shelljs#0.1.2, follow-redirects#0.0.3, elementtree#0.1.3, glob#3.2.3, plist#0.4.3, prompt#0.2.7, xcode#0.5.1, tar#0.1.17, express#3.0.0, ripple-emulator#0.9.18, plugman#0.9.10, request#2.22.0)
MikeBook-Pro:apps Mike$
I then restart terminal (completely quit it, cmd+q) and run phonegap, to be greeted with:
MikeBook-Pro:~ Mike$ phonegap
-bash: phonegap: command not found
I'm at my wits end here. I've installed other stuff through NPM without a problem. My /etc/paths looks like the following:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
I have followed the above steps using cordova instead of phonegap, but alas; the same issue.
Any help is hugely appreciated, I just want to cry.
Edit: I'm currently trying this on OSX 10.8.2 (Mountain Lion)
I was some how missing a few paths from my /etc/paths file. Below is that new file:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/local/share
/usr/local/share/npm
/usr/local/share/npm/lib/node_modules/
/usr/local/share/npm/bin
.npm

Resources