Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Fehler bei der Installation von ioBroker

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    199

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Fehler bei der Installation von ioBroker

Fehler bei der Installation von ioBroker

Scheduled Pinned Locked Moved ioBroker Allgemein
installationsproblemeinstallationsfehleriobroker installationnpm errunexpected end of json
24 Posts 3 Posters 2.8k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Thomas BraunT Thomas Braun

    @Homoran sagte in Fehler bei der Installation von ioBroker:

    Da ist irgendetwas mit dem Download schief gegangen.

    Ich sehe diese Fehler in den letzten Tagen häufiger. Auch bei aktualisierten Adaptern.
    npm cache löschen und nochmal installieren hilft dann ggf.
    Ist da auf dem Server mit den Repos vielleicht auch irgendwas krumm?

    HomoranH Do not disturb
    HomoranH Do not disturb
    Homoran
    Global Moderator Administrators
    wrote on last edited by
    #10

    @Thomas-Braun sagte in Fehler bei der Installation von ioBroker:

    npm cache löschen und nochmal installieren hilft dann ggf.

    bei npm basierten Infos sicher, da dann neu geladen wird.
    wie das bei einem curl aussieht habe ich leider keine Ahnung, ob man da ein --force oder sonst etwas noch hinzufügen kann, damit es neu heruntergeladen wird

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    1 Reply Last reply
    0
    • K Offline
      K Offline
      Kruech
      wrote on last edited by
      #11

      hmm also den cache löschen geht hier wohl auch nicht so einfach.

      pi@iobroker:/ $ npm cache clean
      npm ERR! As of npm@5, the npm cache self-heals from corruption issues and data extracted from the cache is guaranteed to be valid. If you want to make sure everything is consistent, use 'npm cache verify' instead. On the other hand, if you're debugging an issue with the installer, you can use `npm install --cache /tmp/empty-cache` to use a temporary cache instead of nuking the actual one.
      npm ERR!
      npm ERR! If you're sure you want to delete the entire cache, rerun this command with --force.
      
      npm ERR! A complete log of this run can be found in:
      npm ERR!     /home/pi/.npm/_logs/2020-05-29T13_05_53_645Z-debug.log
      
      
      HomoranH 1 Reply Last reply
      0
      • K Kruech

        hmm also den cache löschen geht hier wohl auch nicht so einfach.

        pi@iobroker:/ $ npm cache clean
        npm ERR! As of npm@5, the npm cache self-heals from corruption issues and data extracted from the cache is guaranteed to be valid. If you want to make sure everything is consistent, use 'npm cache verify' instead. On the other hand, if you're debugging an issue with the installer, you can use `npm install --cache /tmp/empty-cache` to use a temporary cache instead of nuking the actual one.
        npm ERR!
        npm ERR! If you're sure you want to delete the entire cache, rerun this command with --force.
        
        npm ERR! A complete log of this run can be found in:
        npm ERR!     /home/pi/.npm/_logs/2020-05-29T13_05_53_645Z-debug.log
        
        
        HomoranH Do not disturb
        HomoranH Do not disturb
        Homoran
        Global Moderator Administrators
        wrote on last edited by
        #12

        @Kruech das muss mit --force gemacht werden

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        1 Reply Last reply
        0
        • K Offline
          K Offline
          Kruech
          wrote on last edited by
          #13

          Ich hab jetzt mal in log geschaut welche bei der Installation vom iobroker am Ende steht.
          Da sind einige von diesen Fehlern drinnen. hier nur ein Auszug

          823 http fetch GET 200 https://registry.npmjs.org/callsite 427ms
          824 http fetch GET 200 https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz 340ms
          825 silly pacote range manifest for async-limiter@~1.0.0 fetched in 435ms
          826 http fetch GET 200 https://registry.npmjs.org/ms/-/ms-2.1.1.tgz 564ms
          827 silly pacote version manifest for ms@2.1.1 fetched in 1079ms
          828 http fetch GET 200 https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz 3851ms
          829 silly pacote version manifest for callsite@1.0.0 fetched in 4290ms
          830 http fetch GET 200 https://registry.npmjs.org/@types%2fnode 6071ms
          831 http fetch GET 200 https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz 827ms
          832 silly pacote range manifest for @types/node@* fetched in 6960ms
          833 silly fetchPackageMetaData error for express-fileupload@^1.1.6 Response timeout while trying to fetch https://registry.npmjs.org/express-fileupload (over 30000ms)
          834 silly fetchPackageMetaData error for express-session@^1.17.1 Response timeout while trying to fetch https://registry.npmjs.org/express-session (over 30000ms)
          835 http fetch GET 200 https://registry.npmjs.org/express-fileupload 33471ms
          836 http fetch GET 200 https://registry.npmjs.org/express-session 33747ms
          837 http fetch GET 200 https://registry.npmjs.org/cookie 30589ms
          838 http fetch GET 200 https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz 109ms
          839 silly pacote version manifest for cookie@0.4.0 fetched in 30709ms
          840 http fetch GET 200 https://registry.npmjs.org/depd/-/depd-1.1.2.tgz 32975ms
          841 silly pacote range manifest for depd@~1.1.2 fetched in 35435ms
          842 http fetch GET 200 https://registry.npmjs.org/proxy-addr 17746ms
          843 http fetch GET 200 https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz 129ms
          844 silly pacote range manifest for proxy-addr@~2.0.5 fetched in 17890ms
          845 http fetch GET 200 https://registry.npmjs.org/forwarded 84ms
          846 http fetch GET 200 https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz 80ms
          847 silly pacote range manifest for forwarded@~0.1.2 fetched in 176ms
          848 http fetch GET 200 https://registry.npmjs.org/ipaddr.js 209ms
          849 http fetch GET 200 https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz 123ms
          850 silly pacote version manifest for ipaddr.js@1.9.1 fetched in 344ms
          851 silly pacote tag manifest for iobroker.admin@stable fetched in 20ms
          852 silly resolveWithNewModule iobroker.admin@4.0.10 checking installable status
          853 silly pacote tag manifest for iobroker.js-controller@stable fetched in 22ms
          854 silly resolveWithNewModule iobroker.js-controller@2.2.9 checking installable status
          855 http fetch GET 304 https://registry.npmjs.org/iobroker.discovery 110ms (from cache)
          856 silly fetchPackageMetaData error for iobroker.discovery@stable Unexpected end of JSON input while parsing near '...all":"https://registr'
          857 http fetch GET 304 https://registry.npmjs.org/iobroker.info 112ms (from cache)
          858 silly fetchPackageMetaData error for iobroker.info@stable Unexpected end of JSON input while parsing near '...a\nlnA+mVwSqD72a1Wh5l'
          859 timing stage:rollbackFailedOptional Completed in 0ms
          860 timing stage:runTopLevelLifecycles Completed in 223076ms
          
          
          Thomas BraunT 1 Reply Last reply
          0
          • K Kruech

            Ich hab jetzt mal in log geschaut welche bei der Installation vom iobroker am Ende steht.
            Da sind einige von diesen Fehlern drinnen. hier nur ein Auszug

            823 http fetch GET 200 https://registry.npmjs.org/callsite 427ms
            824 http fetch GET 200 https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz 340ms
            825 silly pacote range manifest for async-limiter@~1.0.0 fetched in 435ms
            826 http fetch GET 200 https://registry.npmjs.org/ms/-/ms-2.1.1.tgz 564ms
            827 silly pacote version manifest for ms@2.1.1 fetched in 1079ms
            828 http fetch GET 200 https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz 3851ms
            829 silly pacote version manifest for callsite@1.0.0 fetched in 4290ms
            830 http fetch GET 200 https://registry.npmjs.org/@types%2fnode 6071ms
            831 http fetch GET 200 https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz 827ms
            832 silly pacote range manifest for @types/node@* fetched in 6960ms
            833 silly fetchPackageMetaData error for express-fileupload@^1.1.6 Response timeout while trying to fetch https://registry.npmjs.org/express-fileupload (over 30000ms)
            834 silly fetchPackageMetaData error for express-session@^1.17.1 Response timeout while trying to fetch https://registry.npmjs.org/express-session (over 30000ms)
            835 http fetch GET 200 https://registry.npmjs.org/express-fileupload 33471ms
            836 http fetch GET 200 https://registry.npmjs.org/express-session 33747ms
            837 http fetch GET 200 https://registry.npmjs.org/cookie 30589ms
            838 http fetch GET 200 https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz 109ms
            839 silly pacote version manifest for cookie@0.4.0 fetched in 30709ms
            840 http fetch GET 200 https://registry.npmjs.org/depd/-/depd-1.1.2.tgz 32975ms
            841 silly pacote range manifest for depd@~1.1.2 fetched in 35435ms
            842 http fetch GET 200 https://registry.npmjs.org/proxy-addr 17746ms
            843 http fetch GET 200 https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz 129ms
            844 silly pacote range manifest for proxy-addr@~2.0.5 fetched in 17890ms
            845 http fetch GET 200 https://registry.npmjs.org/forwarded 84ms
            846 http fetch GET 200 https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz 80ms
            847 silly pacote range manifest for forwarded@~0.1.2 fetched in 176ms
            848 http fetch GET 200 https://registry.npmjs.org/ipaddr.js 209ms
            849 http fetch GET 200 https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz 123ms
            850 silly pacote version manifest for ipaddr.js@1.9.1 fetched in 344ms
            851 silly pacote tag manifest for iobroker.admin@stable fetched in 20ms
            852 silly resolveWithNewModule iobroker.admin@4.0.10 checking installable status
            853 silly pacote tag manifest for iobroker.js-controller@stable fetched in 22ms
            854 silly resolveWithNewModule iobroker.js-controller@2.2.9 checking installable status
            855 http fetch GET 304 https://registry.npmjs.org/iobroker.discovery 110ms (from cache)
            856 silly fetchPackageMetaData error for iobroker.discovery@stable Unexpected end of JSON input while parsing near '...all":"https://registr'
            857 http fetch GET 304 https://registry.npmjs.org/iobroker.info 112ms (from cache)
            858 silly fetchPackageMetaData error for iobroker.info@stable Unexpected end of JSON input while parsing near '...a\nlnA+mVwSqD72a1Wh5l'
            859 timing stage:rollbackFailedOptional Completed in 0ms
            860 timing stage:runTopLevelLifecycles Completed in 223076ms
            
            
            Thomas BraunT Online
            Thomas BraunT Online
            Thomas Braun
            Most Active
            wrote on last edited by Thomas Braun
            #14

            @Kruech sagte in Fehler bei der Installation von ioBroker:

            npmjs.org

            So oft wie ich in den letzten Tagen korrupte json Files gesehen habe vermute ich, dass es irgendwo auf npmjs.org klemmt.

            [Edit:] BINGO!
            https://status.npmjs.org/

            Monitoring - We began investigating an issue with the npmjs.com website a short time ago, quickly identified the issue and we are monitoring a fix we have deployed.
            May 29, 06:10 UTC

            Linux-Werkzeugkasten:
            https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
            NodeJS Fixer Skript:
            https://forum.iobroker.net/topic/68035/iob-node-fix-skript
            iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

            1 Reply Last reply
            0
            • K Offline
              K Offline
              Kruech
              wrote on last edited by
              #15

              Alles klar, dann vielen Dank erstmal, dann bin ich beruhigt das es nicht an mir liegt und dann hilft wohl nur Tee trinken.

              1 Reply Last reply
              0
              • K Offline
                K Offline
                Kruech
                wrote on last edited by
                #16

                So trotz das bei https://status.npmjs.org/ wieder alles grün ist habe ich immer noch die gleichen Probleme. Hat jemand ne weitere Idee?

                Thomas BraunT 1 Reply Last reply
                0
                • K Kruech

                  So trotz das bei https://status.npmjs.org/ wieder alles grün ist habe ich immer noch die gleichen Probleme. Hat jemand ne weitere Idee?

                  Thomas BraunT Online
                  Thomas BraunT Online
                  Thomas Braun
                  Most Active
                  wrote on last edited by Thomas Braun
                  #17

                  @Kruech
                  Zuerst musst du mal schauen, ob node sauber installiert ist:

                  which nodejs && nodejs -v && which node && node -v && which npm && npm -v
                  

                  Dann als user, der auch die Installation durchführt:

                  npm cache clean --force
                  

                  Und dann nochmal den Installer anhauen.

                  curl -sL https://iobroker.net/install.sh | bash -
                  

                  Linux-Werkzeugkasten:
                  https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                  NodeJS Fixer Skript:
                  https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                  iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                  1 Reply Last reply
                  0
                  • K Offline
                    K Offline
                    Kruech
                    wrote on last edited by Kruech
                    #18

                    @Thomas-Braun

                    pi@raspberrypi:~ $ which nodejs && nodejs -v && which node && node -v && which npm && npm -v
                    /usr/bin/nodejs
                    v10.20.1
                    /usr/bin/node
                    v10.20.1
                    /usr/bin/npm
                    6.14.4
                    

                    Cache clean und neu installiert habe ich auch schon probiert. Trotzdem immer

                    library: loaded
                    Library version=2020-04-12
                    
                    ==========================================================================
                    
                        Welcome to the ioBroker installer!
                        Installer version: 2020-04-12
                    
                        You might need to enter your password a couple of times.
                    
                    ==========================================================================
                    
                    
                    ==========================================================================
                        Installing prerequisites (1/4)
                    ==========================================================================
                    
                    OK:1 http://archive.raspberrypi.org/debian buster InRelease
                    OK:2 http://raspbian.raspberrypi.org/raspbian buster InRelease
                    OK:3 https://deb.nodesource.com/node_10.x buster InRelease
                    Paketlisten werden gelesen... Fertig
                    Changing npm registry to https://registry.npmjs.org
                    Installed gcc-c++
                    
                    ==========================================================================
                        Creating ioBroker user and directory (2/4)
                    ==========================================================================
                    
                    Created /etc/sudoers.d/iobroker
                    Directory /opt/iobroker created
                    
                    ==========================================================================
                        Installing ioBroker (3/4)
                    ==========================================================================
                    
                    npm ERR! Unexpected end of JSON input while parsing near '...sk":"^1.0.6","@iobrok'
                    
                    npm ERR! A complete log of this run can be found in:
                    npm ERR!     /home/pi/.npm/_logs/2020-06-02T18_53_21_120Z-debug.log
                    
                    ==========================================================================
                        Finalizing installation (4/4)
                    ==========================================================================
                    
                    Enabling autostart...
                    Autostart enabled!
                    Fixing directory permissions...
                    ==========================================================================
                    
                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      Kruech
                      wrote on last edited by
                      #19

                      in der log-Datei von der IoBroker installation hab ich immer paar mal nen timeout.

                      1051 silly fetchPackageMetaData error for engine.io@~3.4.0 Response timeout while trying to fetch https://registry.npmjs.org/engine.io (over 30000ms)
                      

                      es sind aber nicht immer die gleichen Pakete.

                      Thomas BraunT 1 Reply Last reply
                      0
                      • K Kruech

                        in der log-Datei von der IoBroker installation hab ich immer paar mal nen timeout.

                        1051 silly fetchPackageMetaData error for engine.io@~3.4.0 Response timeout while trying to fetch https://registry.npmjs.org/engine.io (over 30000ms)
                        

                        es sind aber nicht immer die gleichen Pakete.

                        Thomas BraunT Online
                        Thomas BraunT Online
                        Thomas Braun
                        Most Active
                        wrote on last edited by
                        #20

                        @Kruech sagte in Fehler bei der Installation von ioBroker:

                        1051 silly fetchPackageMetaData error for engine.io@~3.4.0 Response timeout while trying to fetch https://registry.npmjs.org/engine.io (over 30000ms)

                        npm install npm@latest -g
                        

                        Linux-Werkzeugkasten:
                        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                        NodeJS Fixer Skript:
                        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                        1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          Kruech
                          wrote on last edited by
                          #21

                          Ich geh kaputt. jetzt hat das wenigstens schon mal soweit geklappt des der IoBroker installiert wurde und ich per Browser drauf komme.

                          Es sind sehr viele "warnings" bei der Installation aufgelaufen.

                          ==========================================================================
                              Installing ioBroker (3/4)
                          ==========================================================================
                          
                          In file included from ../src/main.cpp:3:
                          ../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                          ../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                        ^
                          In file included from ../../nan/nan.h:56,
                                           from ../src/main.cpp:3:
                          ../src/main.cpp: At global scope:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
                                 (node::addon_register_func) (regfunc),                          \
                                                                     ^
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
                             NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
                             ^~~~~~~~~~~~~
                          ../src/main.cpp:42:1: note: in expansion of macro ‘NODE_MODULE’
                           NODE_MODULE(diskusage, Init)
                           ^~~~~~~~~~~
                          In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                           from ../../nan/nan.h:56,
                                           from ../src/main.cpp:3:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                          reinterpret_cast<Callback>(callback), type);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                          ../../nan/nan_object_wrap.h:65:61:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                          In file included from ../src/unix_dgram.cc:5:
                          ../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                          ../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                        ^
                          In file included from ../../nan/nan.h:56,
                                           from ../src/unix_dgram.cc:5:
                          ../src/unix_dgram.cc: At global scope:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
                                 (node::addon_register_func) (regfunc),                          \
                                                                     ^
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
                             NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
                             ^~~~~~~~~~~~~
                          ../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’
                           NODE_MODULE(unix_dgram, Initialize)
                           ^~~~~~~~~~~
                          In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                           from ../../nan/nan.h:56,
                                           from ../src/unix_dgram.cc:5:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                          reinterpret_cast<Callback>(callback), type);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                          ../../nan/nan_object_wrap.h:65:61:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                          In file included from ../src/./serialport.h:6,
                                           from ../src/serialport.cpp:1:
                          ../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                          ../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’}  -Wcast-function-type]
                               , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                        ^
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:78:69: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen);
                                                                                               ^~~~~~~~~~~~~
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:135:71: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate);
                                                                                                 ^~~~~~~~~~~~~~~
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:175:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose);
                                                                                                ^~~~~~~~~~~~~~
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:215:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush);
                                                                                                ^~~~~~~~~~~~~~
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:270:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet);
                                                                                              ^~~~~~~~~~~~
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:314:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet);
                                                                                              ^~~~~~~~~~~~
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE GetBaudRate(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:363:76: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_GetBaudRate, (uv_after_work_cb)EIO_AfterGetBaudRate);
                                                                                                      ^~~~~~~~~~~~~~~~~~~~
                          ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)’:
                          ../src/serialport.cpp:409:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                             uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain);
                                                                                                ^~~~~~~~~~~~~~
                          ../src/serialport.cpp: At global scope:
                          ../src/serialport.cpp:430:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses]
                           SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local<v8::String>& v8str)) {
                                                      ^
                          ../src/serialport.cpp:449:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses]
                           SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) {
                                                        ^
                          In file included from ../../../nan/nan.h:56,
                                           from ../src/./serialport.h:6,
                                           from ../src/serialport.cpp:1:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
                                 (node::addon_register_func) (regfunc),                          \
                                                                     ^
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
                             NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
                             ^~~~~~~~~~~~~
                          ../src/serialport.cpp:483:1: note: in expansion of macro ‘NODE_MODULE’
                           NODE_MODULE(serialport, init);
                           ^~~~~~~~~~~
                          In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                           from ../../../nan/nan.h:56,
                                           from ../src/./serialport.h:6,
                                           from ../src/serialport.cpp:1:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                          reinterpret_cast<Callback>(callback), type);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                          ../../../nan/nan_object_wrap.h:65:61:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                          In file included from ../src/serialport.h:6,
                                           from ../src/serialport_unix.cpp:2:
                          ../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                          ../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’}  -Wcast-function-type]
                               , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                        ^
                          In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                           from ../../../nan/nan.h:56,
                                           from ../src/serialport.h:6,
                                           from ../src/serialport_unix.cpp:2:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                          reinterpret_cast<Callback>(callback), type);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                          ../../../nan/nan_object_wrap.h:65:61:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                          ../src/serialport_unix.cpp: In function ‘int setup(int, OpenBaton*)’:
                          ../src/serialport_unix.cpp:176:60: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1005 [-Wformat-truncation=]
                               snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path);
                                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~
                          ../src/serialport_unix.cpp:176:13: note: ‘snprintf’ output 20 or more bytes (assuming 1043) into a destination of size 1024
                               snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path);
                               ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ../src/serialport_unix.cpp: In function ‘void EIO_Open(uv_work_t*)’:
                          ../src/serialport_unix.cpp:86:60: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1003 [-Wformat-truncation=]
                               snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path);
                                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                          ../src/serialport_unix.cpp:86:13: note: ‘snprintf’ output 22 or more bytes (assuming 1045) into a destination of size 1024
                               snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path);
                               ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          In file included from ../src/poller.cpp:1:
                          ../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                          ../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’}  -Wcast-function-type]
                               , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                        ^
                          In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                           from ../../../nan/nan.h:56,
                                           from ../src/poller.cpp:1:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                          /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                          reinterpret_cast<Callback>(callback), type);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                          ../../../nan/nan_object_wrap.h:65:61:   required from here
                          /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                          
                          ==========================================================================
                          
                          
                          Thomas BraunT 1 Reply Last reply
                          0
                          • K Kruech

                            Ich geh kaputt. jetzt hat das wenigstens schon mal soweit geklappt des der IoBroker installiert wurde und ich per Browser drauf komme.

                            Es sind sehr viele "warnings" bei der Installation aufgelaufen.

                            ==========================================================================
                                Installing ioBroker (3/4)
                            ==========================================================================
                            
                            In file included from ../src/main.cpp:3:
                            ../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                            ../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                                 , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                          ^
                            In file included from ../../nan/nan.h:56,
                                             from ../src/main.cpp:3:
                            ../src/main.cpp: At global scope:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
                                   (node::addon_register_func) (regfunc),                          \
                                                                       ^
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
                               NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
                               ^~~~~~~~~~~~~
                            ../src/main.cpp:42:1: note: in expansion of macro ‘NODE_MODULE’
                             NODE_MODULE(diskusage, Init)
                             ^~~~~~~~~~~
                            In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                             from ../../nan/nan.h:56,
                                             from ../src/main.cpp:3:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                            reinterpret_cast<Callback>(callback), type);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                            ../../nan/nan_object_wrap.h:65:61:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                            In file included from ../src/unix_dgram.cc:5:
                            ../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                            ../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                                 , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                          ^
                            In file included from ../../nan/nan.h:56,
                                             from ../src/unix_dgram.cc:5:
                            ../src/unix_dgram.cc: At global scope:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
                                   (node::addon_register_func) (regfunc),                          \
                                                                       ^
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
                               NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
                               ^~~~~~~~~~~~~
                            ../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’
                             NODE_MODULE(unix_dgram, Initialize)
                             ^~~~~~~~~~~
                            In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                             from ../../nan/nan.h:56,
                                             from ../src/unix_dgram.cc:5:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                            reinterpret_cast<Callback>(callback), type);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                            ../../nan/nan_object_wrap.h:65:61:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                            In file included from ../src/./serialport.h:6,
                                             from ../src/serialport.cpp:1:
                            ../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                            ../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’}  -Wcast-function-type]
                                 , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                          ^
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:78:69: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen);
                                                                                                 ^~~~~~~~~~~~~
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:135:71: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate);
                                                                                                   ^~~~~~~~~~~~~~~
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:175:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose);
                                                                                                  ^~~~~~~~~~~~~~
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:215:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush);
                                                                                                  ^~~~~~~~~~~~~~
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:270:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet);
                                                                                                ^~~~~~~~~~~~
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:314:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet);
                                                                                                ^~~~~~~~~~~~
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE GetBaudRate(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:363:76: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_GetBaudRate, (uv_after_work_cb)EIO_AfterGetBaudRate);
                                                                                                        ^~~~~~~~~~~~~~~~~~~~
                            ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)’:
                            ../src/serialport.cpp:409:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
                               uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain);
                                                                                                  ^~~~~~~~~~~~~~
                            ../src/serialport.cpp: At global scope:
                            ../src/serialport.cpp:430:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses]
                             SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local<v8::String>& v8str)) {
                                                        ^
                            ../src/serialport.cpp:449:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses]
                             SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) {
                                                          ^
                            In file included from ../../../nan/nan.h:56,
                                             from ../src/./serialport.h:6,
                                             from ../src/serialport.cpp:1:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
                                   (node::addon_register_func) (regfunc),                          \
                                                                       ^
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
                               NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
                               ^~~~~~~~~~~~~
                            ../src/serialport.cpp:483:1: note: in expansion of macro ‘NODE_MODULE’
                             NODE_MODULE(serialport, init);
                             ^~~~~~~~~~~
                            In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                             from ../../../nan/nan.h:56,
                                             from ../src/./serialport.h:6,
                                             from ../src/serialport.cpp:1:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                            reinterpret_cast<Callback>(callback), type);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                            ../../../nan/nan_object_wrap.h:65:61:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                            In file included from ../src/serialport.h:6,
                                             from ../src/serialport_unix.cpp:2:
                            ../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                            ../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’}  -Wcast-function-type]
                                 , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                          ^
                            In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                             from ../../../nan/nan.h:56,
                                             from ../src/serialport.h:6,
                                             from ../src/serialport_unix.cpp:2:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                            reinterpret_cast<Callback>(callback), type);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                            ../../../nan/nan_object_wrap.h:65:61:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                            ../src/serialport_unix.cpp: In function ‘int setup(int, OpenBaton*)’:
                            ../src/serialport_unix.cpp:176:60: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1005 [-Wformat-truncation=]
                                 snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path);
                                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~
                            ../src/serialport_unix.cpp:176:13: note: ‘snprintf’ output 20 or more bytes (assuming 1043) into a destination of size 1024
                                 snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path);
                                 ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            ../src/serialport_unix.cpp: In function ‘void EIO_Open(uv_work_t*)’:
                            ../src/serialport_unix.cpp:86:60: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1003 [-Wformat-truncation=]
                                 snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path);
                                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                            ../src/serialport_unix.cpp:86:13: note: ‘snprintf’ output 22 or more bytes (assuming 1045) into a destination of size 1024
                                 snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path);
                                 ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            In file included from ../src/poller.cpp:1:
                            ../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
                            ../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’}  -Wcast-function-type]
                                 , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                                                          ^
                            In file included from /home/pi/.cache/node-gyp/10.20.1/include/node/node.h:63,
                                             from ../../../nan/nan.h:56,
                                             from ../src/poller.cpp:1:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
                            /home/pi/.cache/node-gyp/10.20.1/include/node/node_object_wrap.h:84:78:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                                            reinterpret_cast<Callback>(callback), type);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
                            ../../../nan/nan_object_wrap.h:65:61:   required from here
                            /home/pi/.cache/node-gyp/10.20.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                            
                            ==========================================================================
                            
                            
                            Thomas BraunT Online
                            Thomas BraunT Online
                            Thomas Braun
                            Most Active
                            wrote on last edited by Thomas Braun
                            #22

                            @Kruech

                            rm -rf /home/pi/.cache/*
                            

                            Und dann würde ich dir eigentlich auch Version 12 von node empfehlen.

                            Zu guter Letzt wirf noch ein

                            iobroker stop
                            iobroker fix
                            

                            hinterher.

                            Linux-Werkzeugkasten:
                            https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                            NodeJS Fixer Skript:
                            https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                            iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                            1 Reply Last reply
                            0
                            • K Offline
                              K Offline
                              Kruech
                              wrote on last edited by
                              #23

                              @Thomas-Braun

                              Vielen Dank für die Hilfe. Dann werde ich jetzt den ganzen Pi nochmal aufsetzten mit Version 12 damit das sauberer ist als wie jetzt. Ich weis gar nicht mehr was ich jetzt alles rumprobiert habe.

                              Thomas BraunT 1 Reply Last reply
                              0
                              • K Kruech

                                @Thomas-Braun

                                Vielen Dank für die Hilfe. Dann werde ich jetzt den ganzen Pi nochmal aufsetzten mit Version 12 damit das sauberer ist als wie jetzt. Ich weis gar nicht mehr was ich jetzt alles rumprobiert habe.

                                Thomas BraunT Online
                                Thomas BraunT Online
                                Thomas Braun
                                Most Active
                                wrote on last edited by Thomas Braun
                                #24

                                @Kruech
                                Wenn es ansonsten läuft...
                                Aber wie du meinst.
                                Der springende Punkt ist bei dir aus irgendwelchen Gründen die Version von npm.
                                Die musst du vor der Installation des ioBrokers (und nach der Installation von nodejs) auf >=6.14.5 bringen.

                                Linux-Werkzeugkasten:
                                https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                NodeJS Fixer Skript:
                                https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                153

                                Online

                                32.4k

                                Users

                                81.3k

                                Topics

                                1.3m

                                Posts
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                ioBroker Community 2014-2025
                                logo
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Recent
                                • Tags
                                • Unread 0
                                • Categories
                                • Unreplied
                                • Popular
                                • GitHub
                                • Docu
                                • Hilfe