NEWS
Node-Enocean Modul kann nicht per "require" eingebunden werden
-
Hallo zusammen,
ich arbeite gerade mit Hochdruck daran, EnOcean Komponenten über ioBroker steuern zu können.
Dazu habe ich das Modul node-enocean per NPM installiert. Bis auf dass serialport und leveldown per build from source installiert wurden, gab es keine Auffälligkeiten bei der Installation von node-enocean.
Nun kann ich das node-enocean Modul aber nicht per "require" in mein Skript einbinden. Ich erhalte dabei die folgende Fehlermeldung:
javascript.0 script.js.common.Enocean_Dimmer: missing ) after argument list at Module._compile (module.js:542:28), at Object.Module._extensions..js (module.js:579:10), at Module.load (module.js:487:32), at tryModuleLoad (module.js:446:12), at Function.Module._load (module.js:438:3), at Module.require (module.js:497:17), at require (internal/module.js:20:19), at require (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:753:32), at script.js.common.Enocean_Dimmer:1:20, at ContextifyScript.Script.runInContext (vm.js:35:29)
Der Require Befehl:
var enocean = require("node-enocean");
Könnt ihr mir bitte sagen, wie ich den Fehler beheben kann?
Vielen Dank im Voraus!
3122_node-enocean_fehler.jpg -
Japp installiert das Modul nicht mit npm, sondern Ruf die Einstellungen deiner JavaScript Adapter Instanz auf und trag dort den Namen des Moduls ein.
Anschließend wird es automatisch installiert und die Instanz startet neu. Danach sollte es funktionieren.
Gesendet von Unterwegs
-
Vielen Dank für den Tipp Jey Cee. Ich habe direkt versucht ihn umzusetzen. Nach dem npm uninstall, cache clear und reboot habe ich node-enocean von ioBroker installieren lassen
Das Ergebnis ist jedoch, dass die Fehlermeldung beim Aufruf von "Require" wieder auftritt:
javascript.0 2017-08-09 09:32:45.632 error at Module._compile (module.js:542:28), at Object.Module._extensions..js (module.js:579:10), at Module.load (module.js:487:32), at tryModuleLoad (module.js:446:12), at Function.Module._ javascript.0 2017-08-09 09:32:45.632 error script.js.common.Enocean_Dimmer: missing ) after argument list
Bei der ioBroker Installation des node-enocean treten die folgenden Fehler im Loglevel Error auf (siehe unten).
Es scheint ja immer zu Problemen mit den Modulen Serialport und Leveldownzu kommen (Habe es schon mehrfach auf verschiedene Arten versucht).
Können diese Installationsprobleme unter Umständen der Grund sein? Weiß jemand, wie ich sie lösen kann?
<u>1.)</u>
javascript.0 2017-08-09 09:25:20.302 error WARN install No prebuilt binaries found (target=6.11.1 runtime=node arch=arm platform=linux) javascript.0 2017-08-09 09:25:20.301 error prebuild-install javascript.0 2017-08-09 09:25:20.282 error http 404 https://github.com/level/leveldown/releases/download/v1.7.2/leveldown-v1.7.2-node-v48-linux-arm.tar.gz javascript.0 2017-08-09 09:25:20.281 error prebuild-install javascript.0 2017-08-09 09:25:19.418 error prebuild-install http request GET https://github.com/level/leveldown/releases/download/v1.7.2/leveldown-v1.7.2-node-v48-linux-arm.tar.gz javascript.0 2017-08-09 09:25:19.418 error info looking for cached prebuild @ /root/.npm/_prebuilds/https-github.com-level-leveldown-releases-download-v1.7.2-leveldown-v1.7.2-node-v48-linux-arm.tar.gz javascript.0 2017-08-09 09:25:19.417 error prebuild-install javascript.0 2017-08-09 09:25:19.399 error info looking for local prebuild @ prebuilds/leveldown-v1.7.2-node-v48-linux-arm.tar.gz javascript.0 2017-08-09 09:25:19.398 error prebuild-install javascript.0 2017-08-09 09:25:19.385 error info begin Prebuild-install version 2.2.1 javascript.0 2017-08-09 09:25:19.384 error javascript.0 2017-08-09 09:25:19.382 error prebuild-install
<u>2.)</u>
javascript.0 2017-08-09 09:28:06.096 info SOLINK_MODULE(target) Release/obj.target/serialport.node javascript.0 2017-08-09 09:28:05.035 error ^ javascript.0 2017-08-09 09:28:05.035 error obj->fd_ = info[0]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:28:05.035 error ../src/serialport_poller.cpp:86:31: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecate javascript.0 2017-08-09 09:28:05.035 error ../src/serialport_poller.cpp: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE SerialportPoller::New(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:28:02.942 info CXX(target) Release/obj.target/serialport/src/serialport_poller.o javascript.0 2017-08-09 09:28:02.276 error ^ javascript.0 2017-08-09 09:28:02.276 error result->vtime = Nan::Get(options, Nan::New("vtime").ToLocalChecked()).ToLocalChecked()->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:28:02.276 error ../src/serialport_unix.cpp:44:111: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecate javascript.0 2017-08-09 09:28:02.272 error ^ javascript.0 2017-08-09 09:28:02.272 error result->vmin = Nan::Get(options, Nan::New("vmin").ToLocalChecked()).ToLocalChecked()->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:28:02.272 error ../src/serialport_unix.cpp:43:109: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated javascript.0 2017-08-09 09:28:02.272 error ../src/serialport_unix.cpp: In function 'OpenBatonPlatformOptions* ParsePlatformOptions(const v8::Local&)': javascript.0 2017-08-09 09:28:00.151 info CXX(target) Release/obj.target/serialport/src/serialport_unix.o javascript.0 2017-08-09 09:27:56.228 error ^ javascript.0 2017-08-09 09:27:56.228 error int fd = info[0]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.228 error ../src/serialport.cpp:600:29: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-decl javascript.0 2017-08-09 09:27:56.228 error ../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:27:56.218 error ^ javascript.0 2017-08-09 09:27:56.218 error int fd = info[0]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.218 error ../src/serialport.cpp:540:29: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-decl javascript.0 2017-08-09 09:27:56.218 error ../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:27:56.212 error ^ javascript.0 2017-08-09 09:27:56.212 error int fd = info[0]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.212 error ../src/serialport.cpp:492:29: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-decl javascript.0 2017-08-09 09:27:56.212 error ../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:27:56.184 error ^ javascript.0 2017-08-09 09:27:56.184 error baton->fd = info[0]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.184 error ../src/serialport.cpp:354:32: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-decl javascript.0 2017-08-09 09:27:56.184 error ../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:27:56.173 error ^ javascript.0 2017-08-09 09:27:56.173 error int fd = info[0]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.173 error ../src/serialport.cpp:234:29: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-decl javascript.0 2017-08-09 09:27:56.173 error ../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Write(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:27:56.167 error ^ javascript.0 2017-08-09 09:27:56.167 error baton->baudRate = Nan::Get(options, Nan::New("baudRate").ToLocalChecked()).ToLocalChecked()->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.167 error ../src/serialport.cpp:198:116: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-de javascript.0 2017-08-09 09:27:56.162 error ^ javascript.0 2017-08-09 09:27:56.162 error int fd = info[0]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.162 error ../src/serialport.cpp:173:29: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-decl javascript.0 2017-08-09 09:27:56.162 error ../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:27:56.159 error ^ javascript.0 2017-08-09 09:27:56.159 error int fd = argv[1]->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.159 error ../src/serialport.cpp:153:31: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-decl javascript.0 2017-08-09 09:27:56.159 error ../src/serialport.cpp: In function 'void EIO_AfterOpen(uv_work_t*)': javascript.0 2017-08-09 09:27:56.140 error ^ javascript.0 2017-08-09 09:27:56.140 error baton->stopBits = ToStopBitEnum(Nan::Get(options, Nan::New("stopBits").ToLocalChecked()).ToLocalChecked()->ToNumber()->NumberValue()); javascript.0 2017-08-09 09:27:56.140 error ../src/serialport.cpp:113:131: warning: 'v8::Local v8::Value::ToNumber() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8173): Use maybe version [-Wdeprecated-d javascript.0 2017-08-09 09:27:56.140 error ^ javascript.0 2017-08-09 09:27:56.140 error baton->bufferSize = Nan::Get(options, Nan::New("bufferSize").ToLocalChecked()).ToLocalChecked()->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.140 error ../src/serialport.cpp:111:120: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-de javascript.0 2017-08-09 09:27:56.136 error ^ javascript.0 2017-08-09 09:27:56.136 error baton->dataBits = Nan::Get(options, Nan::New("dataBits").ToLocalChecked()).ToLocalChecked()->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.136 error ../src/serialport.cpp:110:116: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-de javascript.0 2017-08-09 09:27:56.134 error ^ javascript.0 2017-08-09 09:27:56.134 error baton->baudRate = Nan::Get(options, Nan::New("baudRate").ToLocalChecked()).ToLocalChecked()->ToInt32()->Int32Value(); javascript.0 2017-08-09 09:27:56.134 error ../src/serialport.cpp:109:116: warning: 'v8::Local v8::Value::ToInt32() const' is deprecated (declared at /root/.node-gyp/6.11.1/include/node/v8.h:8209): Use maybe version [-Wdeprecated-dec javascript.0 2017-08-09 09:27:56.134 error ../src/serialport.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)': javascript.0 2017-08-09 09:27:54.052 info CXX(target) Release/obj.target/serialport/src/serialport.o javascript.0 2017-08-09 09:27:54.050 info make: Entering directory '/opt/iobroker/node_modules/iobroker.javascript/node_modules/serialport/build' javascript.0 2017-08-09 09:27:48.858 error node-pre-gyp ERR! Pre-built binaries not found for serialport@3.1.2 and node@6.11.1 (node-v48 ABI) (falling back to source compile with node-gyp) javascript.0 2017-08-09 09:27:48.851 error javascript.0 2017-08-09 09:27:48.847 error Tried to download: https://github.com/voodootikigod/node-serialport/releases/download/3.1.2/serialport-v3.1.2-node-v48-linux-arm.tar.gz javascript.0 2017-08-09 09:27:48.845 error javascript.0 2017-08-09 09:27:48.842 error ERR! javascript.0 2017-08-09 09:27:48.839 error javascript.0 2017-08-09 09:27:48.835 error node-pre-gyp javascript.0 2017-08-09 09:27:35.612 info > node-pre-gyp install --fallback-to-build
-
Bei mir siehts so aus:
d:\test\node_modules\node-enocean\index.js:226 socket.on( "get-last-sensor-value" , async function( id ) { ^^^^^ SyntaxError: missing ) after argument list
Das ist EcmaScript 6-Syntax und funktioniert nur ab NodeJS 7.x (besser 8.x). Ist halt etwas blöd vom Programmierer, das nicht durch einen Transpiler wie Babel/TypeScript/etc. zu jagen.
-
Ich bin jetzt kein Experte…
Nach einer Installation der Version 8.2.1 kam es bei der Installation von node-enocean zu anderen Fehlern. Zudem hatte ioBroker den javascript Adapter immernoch mit einer 6er Node Version geladen, wodurch das Update in der Form gar nicht gezogen wurde.
Hat jemand einen spezifischen Hinweis, was ich machen kann, damit der Fehler nicht mehr auftritt?
Jetzt mal ganz doof... Kann ich die scheinbar fehlende Klammer nicht irgendwo ergänzen?
Vielen Dank und Gruß
Kevin
-
Jetzt mal ganz doof… Kann ich die scheinbar fehlende Klammer nicht irgendwo ergänzen? `
Da fehlt keine Klammer. Async ist ein neues Keyword, das einer Funktionsdefinition vorangestellt wird. Der Parser kennt das nicht und denkt, die Liste der Argumente müsste zuende sein.Wenn du die "anderen" Fehler mal postest, kann man dir vllt helfen
-
> Wenn du die "anderen" Fehler mal postest, kann man dir vllt helfen
Vielen Dank für den Hinweis, AlCalzone. Ich versuche einmal so viele Infos wie möglich zusammenzutragen:
Folgenden Aufruf setze ich ab:
/opt/iobroker/node_modules/iobroker.javascript# npm install node-enocean --unsafe-perm
Ich hatte zuerst Fehler angezeigt bekommen, dass er sich zu registry registry.npmjs.org nicht verbinden konnte.
Dazu habe ich die IP in das /etc/hosts file eingetragen und die Installation hat daraufhin funktioniert.
Ich versuche erst einmal weiter und berichte später.
<u>Edit1:</u>
Letztendlich hat die das Update von 6.x auf 8.2.1 keine Früchte getragen und die gleichen Fehler aufgeworfen bei node-enocean. Im Log wurde aber auch alle Adapter noch mit 6.x geladen. Vielleicht habe ich hier beim Update geschlampt. Da kam es zur Entscheidung, es mit einer sauberen neuen 8.2.1 ohne vorinstallierter 6.x zu versuchen…
<u>EDIT2:</u>
Den vergangenen Tag habe ich ca 10 mal (immer mit verschiedenen Hacks) versucht, auf einer neuen sauberen Jessie Lite unter Node 8.2.1 (NPM 5.3) ioBroker zum laufen zu bekommen. Dabei sind quasi alle Fehler aus dem Thread http://forum.iobroker.net/viewtopic.php?t=7450 auch bei mir aufgetreten (plus etwaige zusätzliche durch die verschiedenen Herangehensweisen…).
Leider habe ich es nicht geschafft, ioBroker zum fliegen zu bekommen.
Falls noch jemand eine ToDo list für die Installation unter 8.2.1 parat hat, nehme ich sie gern an
Ansonsten versuche ich mich wohl als nächstes mal mit 7.x
-
Mit 7.x hat die Installation von ioBroker, JS-Adapter sowie node-enocean Modul funktioniert!!!
Ich hab beim Browseraufruf jedoch den Hinweis bekommen, dass ich doch bitte auf 4,6 oder 8 updaten soll, da 7.x nicht supported wird.
Kennt jemand Komplikationen bei ioBroker mit node 7.x?
-
Bei mir läuft 7.x stabil.
Der Grund ist ein anderer. Nur die geraden Versionen werden eine Langzeitunterstützung bekommen, die ingeraden sind sozusagen Entwicklerversionen.
Gruß
Rainer
-
Okay, also erst einmal kein Grund zur Sorge. Danke für die Info, Rainer.
Gruß Kevin