Guten Morgen,
ich habe am Sonntag ein Update von FHEM gemacht und seit dem beim Öffnen eines notify folgende Fehlermeldung:
fhemweb.js line 1587:
Uncaught TypeError: arg.replaceAll is not a function
Hier noch ein list von WEB:
Internals:
BYTES_READ 3610021
BYTES_WRITTEN 27688346
CONNECTS 2156
CSRFTOKEN csrf_992744847037721
DEF 8083 global
FD 6
FUUID 5c43035d-f33f-8873-3e8a-4de1b020d11826d0
FVERSION 01_FHEMWEB.pm:0.253090/2021-12-06
NAME WEB
NR 5
NTFY_ORDER 50-WEB
PORT 8083
STATE Initialized
TYPE FHEMWEB
READINGS:
2021-12-12 08:28:06 state Initialized
Attributes:
CORS 1
JavaScripts codemirror/fhem_codemirror.js
column 00_A:Fenster|WS980,dummy,Messwerte|Sprit 00_Fenster:ESPEasy%20Device,IT,MQTT2_DEVICE,ZWave,notify,watchdog
comment 00_A:Fenster|WS980,dummy 00_Fenster:ESPEasy%20Device,IT,MQTT2_DEVICE,ZWave,notify,watchdog
editConfig 1
hiddenroom ProfileRoom
longpoll websocket
plotEmbed 0
ploteditor always
plotfork 1
plotmode SVG
styleData {
"f18": {
"Pinned.menu": true,
"cols.bg": "FFFFE7",
"cols.fg": "000000",
"cols.link": "278727",
"cols.evenrow": "F8F8E0",
"cols.oddrow": "F0F0D8",
"cols.header": "E0E0C8",
"cols.menu": "D7FFFF",
"cols.sel": "A0FFFF",
"cols.inpBack": "FFFFFF",
"savePinChanges": true,
"Pinned.Room.Wohnzimmer.grp.xs1Dev": true,
"Pinned.Room.CUL%5fTCM97001.grp.CUL_TCM97001": true,
"Pinned.Room.Wetter.grp.CUL_TCM97001": true,
"Pinned.Room.Wetter.grp.OREGON": true,
"Pinned.Room.FS20.grp.FS20": true,
"Pinned.detail.Internals": true,
"Pinned.Room.Wetter.grp.Hideki": true,
"Pinned.Room.Timer%5fLog.grp.FileLog": true,
"Pinned.Room.EnOcean.grp.switch.00": true,
"Pinned.detail.DeviceOverview": true,
"Pinned.Room.Unsorted.grp.PRESENCE": true,
"Pinned.detail.Plot Editor": true,
"Pinned.Room.undefined.grp.HK_Profil": true,
"Pinned.Room.MAX.grp.HK_Profil": true,
"Pinned.Room.MAX.grp. MAX_Plots": true,
"Pinned.Room.MAX.grp.Test": true,
"Pinned.Room.07%5fGas.grp.ESPEasy Device": true,
"Pinned.Room.08%5fHeizung.grp.HK_ZWave": true,
"Pinned.Room.FLAMINGO.grp.FLAMINGO": true,
"Pinned.Room.00_A.grp.ESPEasy Device": true,
"Pinned.Room.08_Zähler.grp.ESPEasy Device": true
}
}
stylesheetPrefix f18
Und hier noch ein beliebiges notify:
Internals:
DEF myAbfall:next_days:.* {
Log 1, "Abfall: $EVENT , $EVTPART1";
#Log 1, "$EVTPART1";
if ($EVTPART1 == 1){
Write_HomeStatus("Tonne",ReadingsVal("myAbfall","next_text","keine"));
}
else
{Write_HomeStatus("Tonne","keine");
}
}
FUUID 602a17b1-f33f-8873-c661-da8a8b558edf82d0
FVERSION 91_notify.pm:0.252310/2021-11-15
NAME n_myAbfall
NOTIFYDEV myAbfall
NR 551
NTFY_ORDER 50-n_myAbfall
REGEXP myAbfall:next_days:.*
STATE 2021-12-14 05:04:56
TRIGGERTIME 1639454696.5544
TYPE notify
READINGS:
2021-12-14 05:03:31 state active
2021-12-14 05:04:56 triggeredByDev myAbfall
2021-12-14 05:04:56 triggeredByEvent next_days: 1
Attributes:
Diese Meldung bekomme ich nur bei notifies. Andere Definitionen sind mMn nicht betroffen.
Norbert
Edit:
Scheint nur ein Problem auf meinem zweiten Raspberry zu sein. Auf dem Android-Tablet gibt es keine Fehlermeldung.
Ich weiss zwar nicht, wie man das Problem nachstellt, aber ich habe die Zeile jetzt modifiziert, damit duerfte es nicht nochmal auftreten.
Danke.
Ich habe heute das Update gemacht und somit schon die Version vom 14.12. installiert.
fhemweb.js 25343 2021-12-14 11:51:22Z rudolfkoenig
Ich bekomme die Fehlermeldung auch, allerdings nur auf meinem Tablet, immer wenn "Everything" refresht wird.
Ja nach Browser gibt es 2 verschiedene Meldungen, beide aber für Zeile 1587:
"Uncaught TypeError: (arg+ "").replaceAll is not a function"
oder
"Uncaught TypeError: Object HMUART1:ok has no method 'replaceAll'"
Über die Feiertage hab ich evtl. Zeit weitere Infos zu sammeln oder die Ursache zu finden. Ich wollte aber jetzt schon mal kundtun, dass der Fehler wohl noch nicht gelöst ist.
Edit:
Ich hab jetzt rausgefunden: Immer wenn in einer Tabellen-Zelle das Wort HMUART1:ok vorkommt, gibt es die Fehlermeldung. Das ist in allen Ansichten so.
Hier das Device wo der HMUART definiert ist:
defmod VCCU CUL_HM 17D872
attr VCCU .mId FFF0
attr VCCU IODev HMUART1
attr VCCU IOList HMUART1
attr VCCU expert defReg,rawReg
attr VCCU icon RPi
attr VCCU model CCU-FHEM
attr VCCU room IO_Devices
attr VCCU subType virtual
attr VCCU webCmd virtual:update
setstate VCCU HMUART1:ok
setstate VCCU 2021-12-21 20:13:34 IODev HMUART1
setstate VCCU 2021-12-21 20:13:37 IOopen 1
setstate VCCU 2021-12-21 20:13:37 state HMUART1:ok
Kannst Du bitte nach der Zeile 1585 (also als Erstes in der Funktion) Folgendes
console.log(typeof(arg));
einbauen, und im Problemfall die Ausgabe in der JavaScript Konsole anschauen?
Welchen Browser (+Version) verwendet ihr?
typeof(arg) liefert "String" somit passt das hier.
Der Fehler liegt aber genau an den alten Browser-Versionen auf dem Tablet, die ich aber leider nicht updaten kann, eben weil das Android zu alt dafür ist:
Die JavaScript Funktion replaceAll() wird noch nicht unterstützt.
siehe https://www.designcise.com/web/tutorial/how-to-fix-replaceall-is-not-a-function-javascript-error (https://www.designcise.com/web/tutorial/how-to-fix-replaceall-is-not-a-function-javascript-error)
Wenn ich wie dort beschrieben die Zeile
arg = (arg+"").replaceAll(" ","."); // Forum #124505
ändere in
arg = (arg+"").replace(/ /g,"."); // Forum #124505
funktioniert es auf den alten und auch auf den neuen Browsern:
Die Select-Felder werden angelegt und mit Werten gefüllt.
Zitat von: rudolfkoenig am 21 Dezember 2021, 20:22:36
Welchen Browser (+Version) verwendet ihr?
Da muss ich erst einmal Abbitte leisten. Funktioniert bei mir doch nicht.
Pi:
Chrome, 72.0.3626.121 mit Raspbian 9.13
Tablet:
Chrome 96.0.4664.104 mit Android 9
Ein
apt-get upgrade chromium-browser
hat keine neue Version installiert. Zwar wurden etliche Libs für Chromium erneuert, aber ohne Veränderung.
Wenn ich den Link von @obrain17 folge, geht replaceAll erst ab Chrome 85.
Über die Feiertage werden ich meinen Pi auf Bullseye bringen.
Norbert
Danke fuer den Hinweis, habe replaceAll durch replace ersetzt.
Laut Wiki ist Chrome 72 aus Januar 2019, und laut caniuse.com gibts replaceAll in Chrome erst seit Version 85, also August 2020.
Funktioniert.
Danke und schöne Weihnachten.
Norbert