Skip to main content
Version: 6

Node.js in Linux

Node.js Setup

While Building a Linux Image

Node.js can be added to an OpenEmbedded Linux build for inclusion into the image's rootfs. After establishing the image build configuration, additionally append the following line to the oe-core/build/conf/local.conf file:

IMAGE_INSTALL_append = "nodejs"

You may also include NPM:

IMAGE_INSTALL_append = "nodejs nodejs-npm"

You may find the page TipsAndTricks/NPM from the Yocto Project Wiki useful.

Performance & Suitability

Since Node.js is a server-side interpreter for the Javascript language, it is expected to perform slower than a compiled language such as C/C++. However, because of its event-driven paradigm, it may well suit web I/O intensive tasks, such as implementing a web server.

Still, Node.js can also be viable for tasks that aren't very CPU intensive, which may be a fast development solution since Javascript is a high level programming language.

Node-RED

Torizon

If you want to run Node-RED on Torizon, we show how to run it on:

Linux BSPs

Install Node-RED with the following command:

# npm install -g node-red --unsafe-perm

Start Node-RED:

# node-red

Examples

GPIO - Blinking LED


var fs = require('fs');

var export_path = '/sys/class/gpio/export';
var blink_period = 500; //in milisseconds

var gpio_53 = new NewGpio(53, 'out', 0);
function NewGpio (id, direction, state) {
this.number = id;
this.path = '/sys/class/gpio/gpio' + id + '/';
this.direction = direction;
this.value = state;
}

function export_pin (pin, callback){
//callback has error as argument, or null if no error
console.log('first');
console.log(pin);
fs.stat(pin.path, function(err, stats) {
console.log('second_not_exp');
console.log(pin);
if (!err) callback(null, pin);//if gpio already exported
else{//if gpio not exported yet
//export it
fs.writeFile(export_path, pin.number, function (err) {
console.log('second_exp');
console.log(pin);
if (err) callback(err, null);
else callback(null, pin);
});
}
});
}

function configure_pin(pin, callback){
//callback has error as argument, or null if no error
console.log('third');
console.log(pin);
fs.writeFile(pin.path + 'direction', pin.direction, function (err) {
if (err) callback(err, null);
else callback(null, pin);
});
}

function blink(pin){
console.log('fourth');
console.log(pin);
fs.writeFile(pin.path + 'value', pin.value, function (err) {
if (err) throw err;
pin.value ? pin.value = 0 : pin.value = 1;
});
}

//here the code execution starts
export_pin( gpio_53, function (err, pin) {
if (err) throw err;
configure_pin(pin, function (err, pin) {
if (err) throw err;
setInterval(function(){
blink(pin);
}, blink_period);//call blink periodically
});
});

Send Feedback!