Head over to https://nodejs.org/en/download/ to get the download url to NodeJS. For this demonstration, NodeJS (v7.2.0) will be installed on Ubuntu 16.04.1.
Next, open up Terminal and use
wget to download the Linux binary.
tar to unpack the file.
tar -xvf node-v7.2.0-linux-x64.tar.xz
Install NodeJS into
cd node-v7.2.0-linux-x64 sudo cp -R * /usr/local/
You can check that NodeJS and NPM are installed correctly by confirming their version numbers from Terminal by running
node -v npm -v
Depending on which version of Raspberry PI you are using (1,2,3, Zero, etc) you will need to download the appropriate pre-compiled binary (ArmV7, ArmV8).
These instructions will show the process for a Raspberry Pi 3 (Running 2016-05-27-raspbian-jessie-lite).
Download and unpack NodeJS (ArmV7).
wget https://nodejs.org/dist/v7.2.0/node-v7.2.0-linux-armv7l.tar.xz tar -xvf node-v7.2.0-linux-armv7l.tar.xz
Install NodeJS into
cd node-v7.2.0-linux-armv7l sudo cp -R * /usr/local/
At this point you can test Node to confirm that you have installed the correct version.
Incorrect NodeJS Version
node -vreports something similar to
-bash: /usr/local/bin/node: cannot execute binary file: Exec format erroror does not respond, you may have installed a version of NodeJS not compatible with your operating system architecture. You can simple repeat the install process with the correct version as it will overwrite the previously installed files.
Clean up the temporary files.
cd ~ rm -rf node-v7.2.0-linux-armv7l rm node-v7.2.0-linux-armv7l.tar.xz
NodeJS and NPM are now installed!
You can install some npm packages globally, such as the droplit.io CLI, to run them from any directory.
npm install droplit-cli -g
However, you may encounter an error like this when installing npm packages globally.
There are a few ways to solve this issue according to docs.npmjs.com. We prefer Option 2 as it does not require changing directory ownership, which may be a security risk.
First, change the install location of global packages.
mkdir ~/.npm-global npm config set prefix '~/.npm-global'
.bashrc to add the new directory to your
echo "export PATH=~/.npm-global/bin:\$PATH" >> ~/.bashrc
Make sure you are the owner of the
~/.npm-global/ directory, or assert your ownership using the following
chown <username>:users ~/.npm-global
Restart your terminal and you should be able to install and use global packages.
You can use .bash_profile instead of .bashrc if you wish.
.bash_profileis only executed for a login-shell, whereas
.bashrcis executed for every new shell instance
If you wish to run NodeJS on an OpenWRT device and node is not already provided for your distribution or node is provided and you require a new version, you should be familiar with OpenWrt's build system.
This article explains how to cross compile NodeJS for OpenWRT.
Once you have the NodeJS Binary file, transfer it to your OpenWRT device. You may need to mark it as executable.
chmod node 755
Depending on CPU speeds, we recommend downloading npm packages on a different computer and transfer them to your device. If any of your packages require compilation, you will want to compile them with your toolchain.
In our testing, we found that the OpenWRT kernel required FPU emulation be enabled for NodeJS to run. Without FPU Emulation, we tested many different versions of NodeJS (0.10 - 6.0.0), and each would result in a floating point exception or not respond. When compiling your OS make sure that you have this feature enabled.