This is a series of tutorials, you can see the topic list here
First of all, node is already available in the rootfs version that I make available at:https://github.com/ricardojlrufino/anyka_v380ipcam_experiments
In the case as we are focused on a camera with an old architecture and kernel, I made several build attempts and got the following results:
node v0.10.38 – OK (working)On node v0.11.1, v8 engine 3.18.0. Removed ARM support for VFP2.
node v0.10.48 – OK (working)
node v0.11.1 – FAIL **
node v4.9.0 – compile (but Segmentation fault)
node v4.9.1 – compile (but Segmentation fault)
node v5.11.1 – FAIL
node v6.17.1 – FAIL
node v8.17.0 – FAIL
node v10.24.1 – FAIL
I prepared a script that does the whole process, from downloading, configuring the variables and compiling.
Download repository, goto folder
/nodejs/v0.10_arm , and run
This will create a folder called: node_install, and static binary in /bin/node
This binary can be copied to camera and run on camera without dependencies..
Although it also has NPM it is not very functional, because the file system is read only, it takes a long time to run. So the package management I do manually, copying the node_modules on the PC to the SDCARD.
Some modules I wanted to use like ‘sqlite3’ use native integration (C++).
As modules generally use the N-API API, and this api was only introduced in Node v8, libraries that use this feature will not work.
Below I present an alternative to be able to call C++ code using NodeJs from old versions
Calling C++ code from Node using NAN
We are going to use this library: https://github.com/nodejs/nan
Despite it claiming that it supports node (0.8, 0.10, 0.12), I had to downgrade the version (“nan”: “2.10.0”) (https://github.com/nodejs/nan/issues/933)
In order for us to compile the libraries, we also need to compile Node v0.10.48 for the desktop.
I already did it, you can find it at:
If you need compile, you only need execute normal build.
git clone –depth 1 https://github.com/nodejs/node -b v0.10.48 node
make && make install
Compiling a node library that uses C++
In the folder ‘
/nodejs/ex_node_nativelib‘ there is an example.
To compile, use the script: build.sh in the directory above
This will generate
Working With the Extension on camera
You can unpack this folder on camera, and execute:
$ node > var NativeExtension = require('./') undefined > NativeExtension.aString() 'This is a thing.' > NativeExtension.aBoolean() false
Exemple using library:
I prepared another example that uses this library: /nodejs/ex_nativelib_demo
You can just copy to camera and run. Note that here I am making use of an extra package “bindings”, it is responsible for helping to load the native library
I’ll provide more examples later, how to use typescript, and automatically generate a file with the modules in just a single file.
So that’s it, we have a high-level language to speed up the development process and when you need to be able to integrate with native code.