16

I just tried to do a npm install but get this error about doctor,js at the end. Do I need to worry about it?

npm install -g yo

. .

npm http 304 https://registry.npmjs.org/graceful-fs
npm http 200 https://registry.npmjs.org/fstream/-/fstream-0.1.25.tgz
/usr/local/bin/yo -> /usr/local/lib/node_modules/yo/cli.js

> yo@1.1.0 postinstall /usr/local/lib/node_modules/yo
> node scripts/doctor.js

npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! yo@1.1.0 postinstall: `node scripts/doctor.js`
npm ERR! `sh "-c" "node scripts/doctor.js"` failed with 1
npm ERR! 
npm ERR! Failed at the yo@1.1.0 postinstall script.
npm ERR! This is most likely a problem with the yo package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node scripts/doctor.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls yo
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.11.0-12-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "yo"
npm ERR! cwd /etc/libvirt/qemu
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.2.18
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /etc/libvirt/qemu/npm-debug.log
npm ERR! not ok code 0

EDIT____________--

for some reason node -v outputs nothing in terminal

I have the latest node installed:

WebstormProjects # sudo apt-get install node Reading package lists... Done Building dependency tree Reading state information... Done node is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 143 not upgraded.

FutuToad
  • 2,750
  • 5
  • 36
  • 63
  • Did either of these solutions work for you? (having the same issue/this is not fixing it) Thanks! – nycynik Jan 17 '14 at 22:04

7 Answers7

29

The solution at this link has worked for me:

http://plaidzooks.tumblr.com/post/36894116867/using-node-js-on-debian-ubuntu-systems

Ubuntu comes with a package that automatically creates a link so the command 'nodejs' can be invoked as 'node' only by creating a link.

sudo apt-get install nodejs-legacy

And that got Yeoman working.

Antonio Drusin
  • 435
  • 4
  • 6
  • Worked for me too. As package description says: ` This package contains a symlink for legacy Node.js code requiring binary to be /usr/bin/node (not /usr/bin/nodejs as provided in Debian). ` – Zaar Hai May 28 '14 at 14:39
10

Likewise I had this same problem (albeit on a Mac). I uninstalled and upgraded node to the latest version (v0.10.24) but without success.

The symlink fix did work for me, although with a slight tweak:

sudo ln -s /usr/local/bin/node /usr/bin/node

joesch
  • 347
  • 1
  • 5
  • 17
  • Worked for me on OSX 10.8.5. Thanks! Submitted an issue to yeoman: https://github.com/yeoman/yeoman/issues/1279 – phreakhead Jan 29 '14 at 07:15
7

I believe this may be due to the way which node was installed on your system. Apparently, sometimes when installing Node via a package manager, the linked binary is nodejs, (thus nodejs _command_ is the command that works on your machine, not the much more common node _comamand_. You can either re-install Node (the latest version is now 0.10.24) from nodejs.org, or try this solution from this related issue:

For anyone wishing to still use their OS's package of node the simple solution for this is to determine where node is installed on your OS and then create a symbolic link.

For example I had the issue on ubuntu and the install directory is /usr/bin. To create the symlink you can run:

sudo ln -s /usr/bin/nodejs /usr/bin/node

in windows you can use the mklink command.. Be sure to open the command prompt as a administrator

Community
  • 1
  • 1
Stephen
  • 5,710
  • 1
  • 24
  • 32
6

You have to install nodejs in this way:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
Flavio Troia
  • 2,451
  • 1
  • 25
  • 27
  • This did not help me on Ubuntu 14.04, as npm would refuse to install. The solution by Antonio Drusin, however, was successful (after I removed the repository and nodejs version installed via flavio's answer and tried again). – ividyon Aug 22 '14 at 12:57
3

I had this same error on a clean Ubuntu 13.10 install and no amount of sym linking (node > nodejs) or installing/uninstalling helped me.

I don't have a deep enough understanding of the node environment to troubleshoot it properly but I was able to install Yeoman globally by cloning the repo and removing the postinstall check from package.json.

If anyone else want's to try this solution:

Clone Yeoman..

cd ~
git clone https://github.com/yeoman/yo

Edit the package.json..

nano yo/package.json

.. to remove these lines..

"scripts": {
    "test": "grunt",
    "postinstall": "node ./scripts/doctor",
    "postupdate": "node ./scripts/doctor"
},

Then, install it using npm..

cd yo
npm install -g

If you want to clean up you can remove the Yeoman repo..

cd ..
rm -R yo/

Obviously your mileage may vary but it's working fine for me so far.

I also noticed I was able to successfully run the doctor.js script independent of the installation process. No idea why it was failing so hard in the first place..

Molomby
  • 5,859
  • 2
  • 34
  • 27
0

On Ubuntu 14.04, I tried both installing the legacy package (per Antonio's answer) and creating the symlink manually (per Stephen's answer). Neither worked. The Ubuntu package has version 0.10.25 of node.js, but Yeoman seems to require a newer version.

After installing the latest version of node.js from NodeSource (currently v6.9.1), I was able to install Yeoman using npm install -g yo .

Community
  • 1
  • 1
Josh Milthorpe
  • 956
  • 1
  • 14
  • 27
-1

To solve this problem you need to install the package nodejs-legacy.

sudo apt-get install nodejs-legacy
user3712694
  • 171
  • 1
  • 3