NEWS
eCharts mit Telegram-Adapter
-
Hallo!
Ich habe gestern mein Raspberry geupdatet (Node.js: v16.18.0; NPM: 8.19.2). Bis dahin gab es keine Probleme, dass ich mir ECharts (1.0.12) mit dem Telgram-Adapter (1.14.1) habe zustellen lassen.
Jetzt gibt es folgenden Hinweis bzw. Fehler:
19:10:00.139 error javascript.0 (2462) script.js.common.Mini-PV_Anlage.Telegramm_Menue: Cannot find required modules: looks like it is not possible to generate charts on your Hardware/OS
Reine Textinformationen werden zugestellt.
Woran kann es liegen? Was muss ich abändern?
Es geht in diese Richtung:
Externer Link Github: https://github.com/ioBroker/ioBroker.echarts/issues/99 -
Ich habe jetzt folgende Befehlte ausgeführt...
cd /opt/iobroker/node_modules/canvas npm install
Die eCharts werden wieder angezeigt, aber:
pi@raspberrypi:/opt/iobroker/node_modules/canvas $ npm install npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated circular-json@0.3.3: CircularJSON is in maintenance only, fl atted is its successor. npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older v ersions may use Math.random() in certain circumstances, which is known to be pro blematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated request@2.88.2: request has been deprecated, see https://git hub.com/request/request/issues/3142 npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer suppor ted. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) > canvas@2.9.3 install > node-pre-gyp install --fallback-to-build --update-binary node-pre-gyp info it worked if it ends with ok node-pre-gyp info using node-pre-gyp@1.0.10 node-pre-gyp info using node@16.18.0 | linux | arm node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.9.3/canvas-v2.9.3-node-v93-linux-glibc-arm.tar.gz node-pre-gyp ERR! install response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.9.3/canvas-v2.9.3-node-v93-linux-glibc-arm.tar.gz node-pre-gyp WARN Pre-built binaries not installable for canvas@2.9.3 and node@16.18.0 (node-v93 ABI, glibc) (falling back to source compile with node-gyp) node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.9.3/canvas-v2.9.3-node-v93-linux-glibc-arm.tar.gz gyp info it worked if it ends with ok gyp info using node-gyp@9.1.0 gyp info using node@16.18.0 | linux | arm gyp info ok gyp info it worked if it ends with ok gyp info using node-gyp@9.1.0 gyp info using node@16.18.0 | linux | arm gyp info find Python using Python version 3.9.2 found at "/usr/bin/python3" gyp http GET https://nodejs.org/download/release/v16.18.0/node-v16.18.0-headers.tar.gz gyp http 200 https://nodejs.org/download/release/v16.18.0/node-v16.18.0-headers.tar.gz gyp http GET https://nodejs.org/download/release/v16.18.0/SHASUMS256.txt gyp http 200 https://nodejs.org/download/release/v16.18.0/SHASUMS256.txt gyp info spawn /usr/bin/python3 gyp info spawn args [ gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py', gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp info spawn args 'make', gyp info spawn args '-I', gyp info spawn args '/opt/iobroker/node_modules/canvas/build/config.gypi', gyp info spawn args '-I', gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', gyp info spawn args '-I', gyp info spawn args '/home/pi/.cache/node-gyp/16.18.0/include/node/common.gypi', gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args '-Dvisibility=default', gyp info spawn args '-Dnode_root_dir=/home/pi/.cache/node-gyp/16.18.0', gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp', gyp info spawn args '-Dnode_lib_file=/home/pi/.cache/node-gyp/16.18.0/<(target_arch)/node.lib', gyp info spawn args '-Dmodule_root_dir=/opt/iobroker/node_modules/canvas', gyp info spawn args '-Dnode_engine=v8', gyp info spawn args '--depth=.', gyp info spawn args '--no-parallel', gyp info spawn args '--generator-output', gyp info spawn args 'build', gyp info spawn args '-Goutput_dir=.' gyp info spawn args ] gyp info ok gyp info it worked if it ends with ok gyp info using node-gyp@9.1.0 gyp info using node@16.18.0 | linux | arm gyp info spawn make gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] make: Verzeichnis „/opt/iobroker/node_modules/canvas/build“ wird betreten SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node COPY Release/canvas-postbuild.node CXX(target) Release/obj.target/canvas/src/backend/Backend.o CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o CXX(target) Release/obj.target/canvas/src/backend/SvgBackend.o CXX(target) Release/obj.target/canvas/src/bmp/BMPParser.o ../src/bmp/BMPParser.cc: In member function ‘void BMPParser::Parser::parse(uint8_t*, int, uint8_t*)’: ../src/bmp/BMPParser.cc:186:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] 186 | E(ptr - data > imgdOffset, "image data overlaps with another structure"); | ~~~~~~~~~~~^~~~~~~~~~~~ ../src/bmp/BMPParser.cc:10:25: note: in definition of macro ‘E’ 10 | #define E(cond, msg) if(cond) return setErr(msg) | ^~~~ ../src/bmp/BMPParser.cc:201:27: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare] 201 | E(ptr - data + imgdSize > len, "not enough image data"); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~ ../src/bmp/BMPParser.cc:10:25: note: in definition of macro ‘E’ 10 | #define E(cond, msg) if(cond) return setErr(msg) | ^~~~ CXX(target) Release/obj.target/canvas/src/Backends.o CXX(target) Release/obj.target/canvas/src/Canvas.o In file included from ../src/Canvas.cc:21: ../src/Util.h: In function ‘void SetProtoAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::FunctionTemplate>)’: ../src/Util.h:27:2: warning: ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’ is deprecated [-Wdeprecated-declarations] 27 | ); | ^ In file included from ../src/backend/Backend.h:6, from ../src/Canvas.h:5, from ../src/Canvas.cc:3: ../node_modules/nan/nan.h:2512:28: note: declared here 2512 | NAN_DEPRECATED inline void SetAccessor( | ^~~~~~~~~~~ CXX(target) Release/obj.target/canvas/src/CanvasGradient.o CXX(target) Release/obj.target/canvas/src/CanvasPattern.o CXX(target) Release/obj.target/canvas/src/CanvasRenderingContext2d.o In file included from ../src/CanvasRenderingContext2d.cc:19: ../src/Util.h: In function ‘void SetProtoAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::FunctionTemplate>)’: ../src/Util.h:27:2: warning: ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’ is deprecated [-Wdeprecated-declarations] 27 | ); | ^ In file included from ../src/backend/Backend.h:6, from ../src/Canvas.h:5, from ../src/CanvasRenderingContext2d.h:6, from ../src/CanvasRenderingContext2d.cc:3: ../node_modules/nan/nan.h:2512:28: note: declared here 2512 | NAN_DEPRECATED inline void SetAccessor( | ^~~~~~~~~~~ CXX(target) Release/obj.target/canvas/src/closure.o CXX(target) Release/obj.target/canvas/src/color.o CXX(target) Release/obj.target/canvas/src/Image.o In file included from ../src/Image.cc:11: ../src/Util.h: In function ‘void SetProtoAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::FunctionTemplate>)’: ../src/Util.h:27:2: warning: ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’ is deprecated [-Wdeprecated-declarations] 27 | ); | ^ In file included from ../src/Image.h:8, from ../src/Image.cc:3: ../node_modules/nan/nan.h:2512:28: note: declared here 2512 | NAN_DEPRECATED inline void SetAccessor( | ^~~~~~~~~~~ CXX(target) Release/obj.target/canvas/src/ImageData.o In file included from ../src/ImageData.cc:5: ../src/Util.h: In function ‘void SetProtoAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::FunctionTemplate>)’: ../src/Util.h:27:2: warning: ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’ is deprecated [-Wdeprecated-declarations] 27 | ); | ^ In file included from ../src/ImageData.h:5, from ../src/ImageData.cc:3: ../node_modules/nan/nan.h:2512:28: note: declared here 2512 | NAN_DEPRECATED inline void SetAccessor( | ^~~~~~~~~~~ CXX(target) Release/obj.target/canvas/src/init.o CXX(target) Release/obj.target/canvas/src/register_font.o SOLINK_MODULE(target) Release/obj.target/canvas.node COPY Release/canvas.node make: Verzeichnis „/opt/iobroker/node_modules/canvas/build“ wird verlassen gyp info ok node-pre-gyp info ok added 466 packages, and audited 467 packages in 2m 54 packages are looking for funding run `npm fund` for details 4 vulnerabilities (1 moderate, 2 high, 1 critical) To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details.
Wem sagt das was?
-
Meine Ursprungsfrage muss sich geklärt haben.
Ich habe aktuell das Problem, das eCharts nicht mehr auf Telegram angezeigt werden.
Ich nutze aktuell:
node.js: v20.18.2
NPM: 10.8.2
eCharts: 1.9.2
Telegram: 3.9.0Im Protokoll erscheint:
echarts.0
2025-01-26 12:44:29.880 error Cannot find required modules: Error: The module '/opt/iobroker/node_modules/canvas/build/Release/canvas.node'was compiled against a different Node.js version usingNODE_MODULE_VERSION 108. This version of Node.js requiresNODE_MODULE_VERSION 115. Please try re-compiling or re-installingthe module (for instance, usingnpm rebuild
ornpm install
).
javascript.0
2025-01-26 12:44:29.890 error script.js.common.Skriptname.Telegramm_Menue: Cannot find required modules: looks like it is not possible to generate charts on your Hardware/OSWie gehe ich jetzt am besten vor? npm rebuild?
Danke.
-
@qwerty1896 per SSH auf dem ioBroker System anmelden,
zum Benutzer "iobroker" wechseln:sudo -u iobroker /usr/bin/bash
in das Verzeichnis von iobroker wechseln:
cd /opt/iobroker/
Und dann schauen was mit
canvas
los ist:npm ls canvas
Bei mir (was nicht heißt das es exakt so aussehen muss, ich habe da auch mal rumgedoktert):
iobroker.inst@2.0.3 /opt/iobroker └─┬ iobroker.echarts@2.0.4 ├── canvas@3.0.1 └─┬ jsdom@26.0.0 └── canvas@3.0.1 deduped
In der Vergangenheit hatte bei mir ein
cd /opt/iobroker/node_modules/canvas/ npm rebuild
oder - müsste das gleiche bewirken
npm rebuild canvas --update-binary
wobei der Schalter
--update-binary
dafür sorgt das auf jeden Fall neu installiert wirdIch habe das ganze aus der History des ioBrokers-Benutzers entnommen. Ich hatte damals canvas mehrmals installiert und es was nicht
dedup
Ich hatte das hier im Forum hier: https://forum.iobroker.net/post/818437 und hier: https://forum.iobroker.net/post/987008 schon mal diskutiert.
Die obigen Befehle stammen vom letztem Upgrade von nodeJS auf 20 -
@qwerty1896 Nachtrag: Ich sehe gerade das du bei eCharts noch auf der 1.9.2 unterwegs bin, ich auf der 2.0.4
Das sollte aber wohl keinen unterschied machen, bis vor kurzen war ich auch noch auf der 1.9.2 unterwegs.
Ich lasse mir auch tägliche Diagramme per Telegram schicken, beim letzten mal musste ich wie zuvor beschrieben das Rebuild machen (nach dem Upgrade von nodeJS 18 auf 20) -
Vielen Dank. Ich schaue mir das mal an.
iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.echarts@1.9.2 │ ├── canvas@2.11.2 │ └─┬ jsdom@25.0.0 │ └── canvas@2.11.2 deduped └─┬ iobroker.energiefluss@3.6.2 └── canvas@2.11.2 deduped iobroker@raspberrypi:/opt/iobroker/node_modules/canvas $ npm rebuild rebuilt dependencies successfully
Telegram-Grafiken werden wieder angezeigt. Ein Rebuild war ausreichend/hilfreich.
Merci.
Ich nehme "nur" die Versionen, die mir "offiziell" zum Update auch angeboten werden. Danach war der Adapter up-to-date.