Node-RED: Unable to install "node-red-contrib-smartmeter" node on Raspberry Pi Zero W

Creating a bug report/issue

Required Information

  • DietPi version: 8.20.1
  • Distro version | bookworm 1
  • Kernel version | Linux DietPi 6.1.21+ #1642 Mon Apr 3 17:19:14 BST 2023 armv6l GNU/Linux
  • Architecture | armhf
  • SBC model | RPi Zero W (armv6l)
  • Power supply used | 5V 2A
  • SD card used | SanDisk High Endurance

Additional Information (if applicable)

  • Software title | Node-RED

Steps to reproduce

  1. Installed DietPI
  2. Installed unofficial node.js like so:
sudo apt-get install xz-utils
wget https://unofficial-builds.nodejs.org/download/release/v20.5.0/node-v20.5.0-linux-armv6l.tar.xz
tar xvfJ node-v20.5.0-linux-armv6l.tar.xz
sudo cp -R node-v20.5.0-linux-armv6l/* /usr/local
rm -rf node-*
sudo reboot
sudo apt-get install -y make
  1. Installed Node-RED with dietpi-software
  2. tried to install “node-red-contrib-smartmeter 0.6.3” from Palette or via ssh “npm i node-red-contrib-smartmeter”

Expected behaviour

  • Node should be installed

Actual behaviour

  • Installation fails

Extra details

Node-RED log:

2023-08-04T08:36:20.036Z Installieren : node-red-contrib-smartmeter 0.6.3

2023-08-04T08:36:20.145Z npm install --no-audit --no-update-notifier --no-fund --save --save-prefix=~ --production --engine-strict node-red-contrib-smartmeter@0.6.3
2023-08-04T08:36:28.865Z [err] npm
2023-08-04T08:36:28.877Z [err]  
2023-08-04T08:36:28.892Z [err] WARN config production Use `--omit=dev` instead.
2023-08-04T08:37:45.709Z [err] npm
2023-08-04T08:37:45.712Z [err]  
2023-08-04T08:37:45.722Z [err] WARN deprecated har-validator@5.1.5: this library is no longer supported
2023-08-04T08:37:49.582Z [err] npm
2023-08-04T08:37:49.585Z [err]  
2023-08-04T08:37:49.601Z [err] WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
2023-08-04T08:37:52.559Z [err] npm
2023-08-04T08:37:52.561Z [err]  
2023-08-04T08:37:52.567Z [err] WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
2023-08-04T08:38:19.317Z [err] npm
2023-08-04T08:38:19.319Z [err]  
2023-08-04T08:38:19.332Z [err] ERR! code 1
2023-08-04T08:38:19.332Z [err] npm ERR! path /mnt/dietpi_userdata/node-red/node_modules/@serialport/bindings
2023-08-04T08:38:19.361Z [err] npm
2023-08-04T08:38:19.363Z [err]  
2023-08-04T08:38:19.371Z [err] ERR! command failed
2023-08-04T08:38:19.371Z [err] npm ERR! command sh -c prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild
2023-08-04T08:38:19.371Z [err] npm ERR! make: Entering directory '/mnt/dietpi_userdata/node-red/node_modules/@serialport/bindings/build'
2023-08-04T08:38:19.371Z [err] npm ERR!   CXX(target) Release/obj.target/bindings/src/serialport.o
2023-08-04T08:38:19.371Z [err] npm
2023-08-04T08:38:19.377Z [err]  
2023-08-04T08:38:19.380Z [err] ERR!
2023-08-04T08:38:19.390Z [err]  make: Leaving directory '/mnt/dietpi_userdata/node-red/node_modules/@serialport/bindings/build'
2023-08-04T08:38:19.390Z [err] npm ERR! prebuild-install warn install No prebuilt binaries found (target=20.5.0 runtime=node arch=arm libc= platform=linux)
2023-08-04T08:38:19.390Z [err] npm ERR! gyp info it worked if it ends with ok
2023-08-04T08:38:19.390Z [err] npm ERR! gyp info using node-gyp@9.4.0
2023-08-04T08:38:19.390Z [err] npm ERR! gyp info using node@20.5.0 | linux | arm
2023-08-04T08:38:19.390Z [err] npm ERR! gyp info find Python using Python version 3.11.2 found at "/usr/bin/python3"
2023-08-04T08:38:19.390Z [err] npm ERR! gyp info spawn /usr/bin/python3
2023-08-04T08:38:19.390Z [err] npm ERR! gyp info spawn args [
2023-08-04T08:38:19.390Z [err] npm 
2023-08-04T08:38:19.392Z [err] ERR!
2023-08-04T08:38:19.394Z [err]  gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
2023-08-04T08:38:19.396Z [err] npm
2023-08-04T08:38:19.401Z [err]  ERR! gyp info spawn args   'binding.gyp',
2023-08-04T08:38:19.401Z [err] npm ERR! gyp info spawn args   '-f',
2023-08-04T08:38:19.401Z [err] npm ERR! gyp info spawn args   'make',
2023-08-04T08:38:19.401Z [err] npm ERR! gyp info spawn args   '-I',
2023-08-04T08:38:19.401Z [err] npm ERR! gyp info spawn args   '/mnt/dietpi_userdata/node-red/node_modules/@serialport/bindings/build/config.gypi',
2023-08-04T08:38:19.401Z [err] npm 
2023-08-04T08:38:19.403Z [err] ERR!
2023-08-04T08:38:19.405Z [err]  gyp info spawn args   '-I',
2023-08-04T08:38:19.412Z [err] npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
2023-08-04T08:38:19.412Z [err] npm ERR! gyp info spawn args   '-I',
2023-08-04T08:38:19.412Z [err] npm ERR! gyp info spawn args   '/mnt/dietpi_userdata/node-red/.cache/node-gyp/20.5.0/include/node/common.gypi',
2023-08-04T08:38:19.412Z [err] npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
2023-08-04T08:38:19.412Z [err] npm ERR! gyp info spawn args   '-Dvisibility=default',
2023-08-04T08:38:19.412Z [err] npm ERR!
2023-08-04T08:38:19.413Z [err]  gyp info spawn args   '-Dnode_root_dir=/mnt/dietpi_userdata/node-red/.cache/node-gyp/20.5.0',
2023-08-04T08:38:19.415Z [err] npm
2023-08-04T08:38:19.417Z [err]  
2023-08-04T08:38:19.422Z [err] ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
2023-08-04T08:38:19.422Z [err] npm ERR! gyp info spawn args   '-Dnode_lib_file=/mnt/dietpi_userdata/node-red/.cache/node-gyp/20.5.0/<(target_arch)/node.lib',
2023-08-04T08:38:19.422Z [err] npm ERR! gyp info spawn args   '-Dmodule_root_dir=/mnt/dietpi_userdata/node-red/node_modules/@serialport/bindings',
2023-08-04T08:38:19.422Z [err] npm ERR! gyp info spawn args   '-Dnode_engine=v8',
2023-08-04T08:38:19.422Z [err] npm
2023-08-04T08:38:19.423Z [err]  
2023-08-04T08:38:19.432Z [err] ERR! gyp info spawn args   '--depth=.',
2023-08-04T08:38:19.432Z [err] npm ERR! gyp info spawn args   '--no-parallel',
2023-08-04T08:38:19.432Z [err] npm ERR! gyp info spawn args   '--generator-output',
2023-08-04T08:38:19.432Z [err] npm ERR! gyp info spawn args   'build',
2023-08-04T08:38:19.432Z [err] npm ERR! gyp info spawn args   '-Goutput_dir=.'
2023-08-04T08:38:19.432Z [err] npm ERR! gyp info spawn args ]
2023-08-04T08:38:19.432Z [err] npm ERR! gyp info spawn make
2023-08-04T08:38:19.432Z [err] npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
2023-08-04T08:38:19.432Z [err] npm 
2023-08-04T08:38:19.436Z [err] ERR!
2023-08-04T08:38:19.439Z [err]  make: g++: No such file or directory
2023-08-04T08:38:19.441Z [err] npm ERR! make: *** [bindings.target.mk:114: Release/obj.target/bindings/src/serialport.o] Error 127
2023-08-04T08:38:19.449Z [err] npm ERR! gyp ERR! build error 
2023-08-04T08:38:19.449Z [err] npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
2023-08-04T08:38:19.449Z [err] npm ERR! gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:203:23)
2023-08-04T08:38:19.449Z [err] npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:514:28)
2023-08-04T08:38:19.449Z [err] npm ERR!
2023-08-04T08:38:19.454Z [err]  gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:294:12)
2023-08-04T08:38:19.456Z [err] npm
2023-08-04T08:38:19.462Z [err]  ERR! gyp ERR! System Linux 6.1.21+
2023-08-04T08:38:19.462Z [err] npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
2023-08-04T08:38:19.462Z [err] npm ERR! gyp ERR! cwd /mnt/dietpi_userdata/node-red/node_modules/@serialport/bindings
2023-08-04T08:38:19.462Z [err] npm ERR! gyp ERR! node -v v20.5.0
2023-08-04T08:38:19.462Z [err] npm ERR! gyp ERR! node-gyp -v v9.4.0
2023-08-04T08:38:19.462Z [err] npm 
2023-08-04T08:38:19.463Z [err] ERR!
2023-08-04T08:38:19.465Z [err]  gyp ERR! not ok
2023-08-04T08:38:19.513Z [err] 
2023-08-04T08:38:19.516Z [err] npm
2023-08-04T08:38:19.518Z [err]  
2023-08-04T08:38:19.521Z [err] ERR! A complete log of this run can be found in: /mnt/dietpi_userdata/node-red/.npm/_logs/2023-08-04T08_36_27_742Z-debug-0.log
2023-08-04T08:38:19.619Z rc=1

did you already tried to install g++?

Thank you @Joulinar ! Installing sudo apt install build-essential solved the issue as it contains make and g++.

Thanks for pointing out g++. Error logs are sometimes confusing if you are not familiar with them.

DietPi is really great!