NEWS

Installation "request-promise" Modul schlägt fehl



  • Hallo zusammen,

    ich versuche gerade das Skript von Volker für die Wärmepumpe ( https://github.com/volkerrichert/ioBroker.ecotouch ) zum Laufen zu bekommen, scheitere jedoch an Zeile 13 des Skriptes.

    var rp = require("request-promise").defaults({jar: true});
    

    Ich habe das "request-promise" Modul als zusätzliches NPM-Modul in der Javascript-Instanz mit angegeben, was jedoch zu folgendem Fehler führt:

    988cf63d-10a4-4f7a-8780-bdd39800c658-image.png

    086a0ee6-d691-477a-938f-6af759570847-image.png

    Der Inhalt des Debug-Logs sieht dann so aus:

    0 info it worked if it ends with ok
    1 verbose cli [ '/usr/bin/node',
    1 verbose cli   '/usr/bin/npm',
    1 verbose cli   'install',
    1 verbose cli   'request-promise',
    1 verbose cli   '--production',
    1 verbose cli   '--prefix',
    1 verbose cli   '/opt/iobroker/node_modules/iobroker.javascript' ]
    2 info using npm@6.4.1
    3 info using node@v8.12.0
    4 verbose npm-session 9f52b3c422c1c9b5
    5 silly install loadCurrentTree
    6 silly install readLocalPackageData
    7 silly fetchPackageMetaData error for request-promise@file:node_modules/request-promise Could not install from "node_modules/request-promise" as it does not contain a package.json file.
    8 timing stage:rollbackFailedOptional Completed in 1ms
    9 timing stage:runTopLevelLifecycles Completed in 1066ms
    10 verbose stack Error: ENOENT: no such file or directory, open '/opt/node_modules/request-promise/package.json'
    11 verbose cwd /opt
    12 verbose Linux 3.10.0-862.11.6.el7.x86_64
    13 verbose argv "/usr/bin/node" "/usr/bin/npm" "install" "request-promise" "--production" "--prefix" "/opt/iobroker/node_modules/iobroker.javascript"
    14 verbose node v8.12.0
    15 verbose npm  v6.4.1
    16 error code ENOLOCAL
    17 error Could not install from "node_modules/request-promise" as it does not contain a package.json file.
    18 verbose exit [ 1, true ]
    

    Über einen Tipp, wie ich das Thema lösen kann, wäre ich dankbar 😀

    Danke
    oetti


  • Developer

    @oetti das sind nicht die Droiden die ihr sucht. Das Modul heißt request-promise-native bzw request-promise-any

    Edit: request-promise gibts wohl auch ist allerdings nicht mehr state-of-the-art



  • @oetti sagte:

    "request-promise" Modul als zusätzliches NPM-Modul in der Javascript-Instanz mit angegeben, was jedoch zu folgendem Fehler führt:

    Bei mir wird das Modul installiert und es gibt nur eine Fehlermeldung bzgl. Abhängigkeit.

    javascript.1	2019-12-10 18:57:56.115	info	added 8 packages from 13 contributors and audited 32 packages in 2.28s
    javascript.1	2019-12-10 18:57:56.115	info	(6574) + request-promise@4.2.5
    javascript.1	2019-12-10 18:57:56.113	error	npm WARN request-promise-core@1.1.3 requires a peer of request@^2.34 but none is installed. You must install peer dependencies yourself.
    javascript.1	2019-12-10 18:57:56.113	error	(6574) WARN request-promise@4.2.5 requires a peer of request@^2.34 but none is installed. You must install peer dependencies yourself.
    javascript.1	2019-12-10 18:57:56.113	error	(6574) npm
    javascript.1	2019-12-10 18:57:53.200	info	(6574) npm install request-promise --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call)
    

    node.js 8.16.2, npm 6.4.1, js 4.3.4


  • Developer

    @oetti Sieht eher nach einem anderen Fehler aus, da er die package.json im im heruntergeladenem Modul nicht finden kann. Bei mir installiert er es testweise auch problemlos.

    Mal das Modul via Terminal installieren:

    npm i request-promise --production --prefix /opt/iobroker/node_modules/iobroker.javascript



  • Also, "request-promise-native" bzw. "request-promise-any" werden problemlos installiert, das Skript läuft jedoch trotzdem nicht.

    @foxriver76
    Den Hinweis mit den Droiden habe ich noch nicht 😁
    Die Installation via Terminal probiere ich gleich.

    Danke schon mal euch beiden

    oetti


  • Developer

    @oetti Müsstest die Zeile 13 mindestens durch
    var rp = require("request-promise-native").defaults({jar: true}); ersetzen, ob das jetzt andere Nebenwirkungen hat, kann ich dir ad-hoc nicht sagen - vermute jedoch nicht.



  • @foxriver76 sagte in Installation "request-promise" Modul schlägt fehl:

    npm i request-promise --production --prefix /opt/iobroker/node_modules/iobroker.javascript

    Gleiches Problem.

    npm i request-promise --production --prefix /opt/iobroker/node_modules/iobroker.javascript
    npm ERR! code ENOLOCAL
    npm ERR! Could not install from "node_modules/request-promise" as it does not contain a package.json file.
    
    

    Kann das ein Thema der node bzw. npm-Version sein?



  • @foxriver76

    Hatte ich gemacht. Sowohl '-native' als auch '-any' ergänzt.


  • Developer

    @oetti Eigentlich ist es eine npm Gechichte, jedoch hat @paul53 auch 6.4.1.

    Wundert mich auch, dass request-promise-native problemlos installiert wird und das andere Modul nicht. Ansonsten hätte ich mir noch eine Rechte-Geschichte vorstellen können - hast du schon mal den Fixer genutzt bzw. eine relativ neue Installation?
    Was kommt für eine Fehlermeldung im Skript wenn du request-promise-native verwendest?



  • @foxriver76 sagte in Installation "request-promise" Modul schlägt fehl:

    @oetti Eigentlich ist es eine npm Gechichte, jedoch hat @paul53 auch 6.4.1.

    Wundert mich auch, dass request-promise-native problemlos installiert wird und das andere Modul nicht. Ansonsten hätte ich mir noch eine Rechte-Geschichte vorstellen können - hast du schon mal den Fixer genutzt bzw. eine relativ neue Installation?
    Was kommt für eine Fehlermeldung im Skript wenn du request-promise-native verwendest?

    Leider nicht viel, der Skript-Editor ist der Meinung, dass auch dieses Modul nicht existiert.

    e40214f0-19f1-4c13-a445-31ef4c92a52e-image.png



  • @oetti sagte:

    der Skript-Editor ist der Meinung, dass auch dieses Modul nicht existiert.

    Das sollte man ignorieren. Dieser Meinung ist der Editor bei allen Modulen.



  • Äähm, ich habe das komplette Skript gelöscht und noch einmal direkt aus dem Git kopiert.
    Die Zeile 13 auf '-native' angepasst - jetzt läuft es.

    Keine Ahnung, was jetzt anders ist, aber "works for me" 👍

    Danke euch beiden
    oetti


  • Developer

    @oetti Der Fehler "could not install from node_modules/..." deutet für mich darauf hin, dass die Pakete irgendwie per symlink oder wie auch immer auf den lokalen Pfad umgebogen wurden. Hast du irgendwas mit npm link gefummelt?


  • Developer

    @paul53 Verschwindet der Fehler, wenn man die Syntaxhilfe für das Modul aktiviert? Oder ist die Version mit dem Feature noch gar nicht draußen?



  • @AlCalzone sagte:

    Syntaxhilfe für das Modul aktiviert?

    Wo macht man das ?


  • Developer

    @paul53 In den Adapter-Optionen:
    https://github.com/ioBroker/ioBroker.javascript/pull/439

    Aber ich schätze, die Version ist noch nicht raus, da auch die Meldung über fehlende Module behoben sein müsste.



  • @AlCalzone sagte in Installation "request-promise" Modul schlägt fehl:

    @oetti Der Fehler "could not install from node_modules/..." deutet für mich darauf hin, dass die Pakete irgendwie per symlink oder wie auch immer auf den lokalen Pfad umgebogen wurden. Hast du irgendwas mit npm link gefummelt?

    Mit npm link hatte ich nicht rumgefummelt (kannte ich bis eben auch noch nicht).
    Was ich gesehen hatte war, dass während der Installation ein Symlink auf sich selbst im Ordner iobroker.javascript angelegt wurde. Den habe ich dann mit "rm" ins Nirvana befördert.



  • Ich muss meinen Thread nochmal wiederbeleben, da mir das besagte Modul weiterhin Problem bereitet.

    Aktuell ist es so, dass jede neue Installation eines Adapters fehlschlägt, da npm weiterhin versucht das "request-promise" Modul zu installieren.
    Deshalb die Frage, ob npm eine List vorhält, mit Modulen die noch installiert werden müssen. Aktuell mal das Debug-Log, als ich versucht habe, den nanoleaf-Adapter zu installieren:

    0 info it worked if it ends with ok
    1 verbose cli [ '/usr/bin/node',
    1 verbose cli   '/usr/bin/npm',
    1 verbose cli   'install',
    1 verbose cli   'https://github.com/daniel-2k/ioBroker.nanoleaf-lightpanels/tarball/master',
    1 verbose cli   '--production',
    1 verbose cli   '--save',
    1 verbose cli   '--prefix',
    1 verbose cli   '/opt/iobroker' ]
    2 info using npm@6.4.1
    3 info using node@v8.12.0
    4 verbose npm-session bb22a4b3b2530406
    5 silly install loadCurrentTree
    6 silly install readLocalPackageData
    7 http fetch GET 200 https://github.com/daniel-2k/ioBroker.nanoleaf-lightpanels/tarball/master 5406ms
    8 silly pacote remote manifest for undefined@https://github.com/daniel-2k/ioBroker.nanoleaf-lightpanels/tarball/master fetched in 5438ms
    9 timing stage:loadCurrentTree Completed in 13499ms
    10 silly install loadIdealTree
    11 silly install cloneCurrentTreeToIdealTree
    12 timing stage:loadIdealTree:cloneCurrentTree Completed in 55ms
    13 silly install loadShrinkwrap
    14 timing stage:loadIdealTree:loadShrinkwrap Completed in 1955ms
    15 silly install loadAllDepsIntoIdealTree
    16 silly resolveWithNewModule iobroker.nanoleaf-lightpanels@0.8.2 checking installable status
    17 http fetch GET 200 https://registry.npmjs.org/osx-temperature-sensor 353ms
    18 silly pacote range manifest for osx-temperature-sensor@^1.0.4 fetched in 358ms
    19 silly resolveWithNewModule osx-temperature-sensor@1.0.4 checking installable status
    20 silly fetchPackageMetaData error for request-promise@file:node_modules/request-promise Could not install from "iobroker/node_modules/iobroker.javascript/node_modules/request-promi
    se" as it does not contain a package.json file.
    21 timing stage:rollbackFailedOptional Completed in 0ms
    
    

    An welcher Stelle kann ich ansetzen, ob diese "request-promise" loszuwerden?

    Danke
    oetti


  • Developer

    @oetti sagte in Installation "request-promise" Modul schlägt fehl:

    An welcher Stelle kann ich ansetzen, ob diese "request-promise" loszuwerden?

    mit npm ls request-promise im Ordner /opt/iobroker findest du einen Anhaltspunkt, wo das benötigt wird.



  • @AlCalzone sagte in Installation "request-promise" Modul schlägt fehl:

    npm ls request-promise

    OK, das sieht dann so aus.

     npm ls request-promise
    iobroker.inst@1.1.2 /opt/iobroker
    ├─┬ iobroker.javascript@4.1.12
    │ └── UNMET DEPENDENCY request-promise@file:node_modules/request-promise
    ├─┬ iobroker.sonos@1.7.7
    │ └─┬ sonos-discovery@1.1.3
    │   └── request-promise@1.0.2
    ├─┬ iobroker.telegram@1.4.3
    │ └─┬ node-telegram-bot-api@0.30.0
    │   └── request-promise@4.2.4
    └── UNMET DEPENDENCY request-promise@^4.2.5
    
    npm ERR! missing: request-promise@^4.2.5, required by iobroker.inst@1.1.2
    npm ERR! missing: request-promise@file:node_modules/request-promise, required by iobroker.javascript@4.1.12
    
    

Log in to reply
 

Suggested Topics

1.9k
Online

32.1k
Users

38.7k
Topics

525.3k
Posts