Création d'un konnector impossible

Bonjour,

Je souhaite créer des konnectors, mais je buche rien que sur la partie tuto de la doc …
Après le clone, le yarn install et le premier yarn standalone, quand je refais un yarn standalone j’ai toujours le message suivante :

$ cozy-konnector-standalone
BaseKonnector: debug : Preparing konnector...
BaseKonnector: error : Expected argument `jsonString` to be a `string`, got `object`
BaseKonnector: error : Account default_account_id does not exist
BaseKonnector: warn : Error from konnector
BaseKonnector: debug : Error caught by BaseKonnector
BaseKonnector: critical : CANNOT_FIND_ACCOUNT
debug : Capture exception and die
error Command failed with exit code 1.

Et ce malgré avoir tenté sur plusieurs os (Windows, Mac, Debian 10).
Point commun entre tous : Node 12.

Je ne comprend vraiment pas l’origine du problème, mise à part qu’il proviendrait de la lib konnector.

Pouvez-vous m’aider s’il vous plait ?

Bonjour @Antho,

Bienvenue à bord :smile:

Est-ce que vous avez bien renseigné un identifiant et un mot de passe dans le fichier konnector-dev-config.json ?

{
  "COZY_URL": "http://cozy.tools:8080",
  "fields": {
    "login": "toto",
    "password": "01234567"
  }
}

Bonjour @Clochix,

Déjà, un grand merci pour ta réactivité :slightly_smiling_face:
J’avais oublié de le mentionné dans mon post original, mais oui, le fichier est bien présent et bien rempli avec des données :

 {
  "COZY_URL": "http://cozy.tools:8080",
  "fields": {
    "login": "me",
    "password": "123456"
  }
}

Par précaution, j’ai vidé mon cache yarn et supprimé le dossier node_modules.
J’ai relancé mon terminal, et refait un yarn install, et de nouveau un yarn standalone.
Et le problème persiste :frowning:

Salut @Antho, je viens de tomber sur le problème aussi. J’aii un correctif. Je sors une nouvelle version de cozy-konnector-libs tout de suite. Je mets et je te tiens au courant quand c’est prêt ici même. Désolé pour la mauvaise première expérience :sweat_smile:

2 Likes

Hello @doubleface,

Merci de me rassurer, je commençais à prendre peur que mes pc soient à l’origine du problème.
Pas grave pour ma première expérience avec la lib, un dev sait toujours rebondir sur ses pattes :smile:
J’espère juste pouvoir un jour publié mes connecteurs et surtout qu’ils soient à la hauteur de votre travail qui est super.

Merci pour tout, et continuez comme ça :wink:

Le template est prêt et à jour et "marche chez moi"™ (comme disent les devs).

Tu peux donc mettre à jour cozy-jobs-cli et cozy-konnector-libs sur ton connecteur ou mettre à jour ton repository template si c’est ce que tu utilises et espérons que la suite se passe mieux pour toi :slight_smile:

3 Likes

@doubleface tu es mon sauveur :heart_eyes:
Je confirme que ton fix fonctionne.

Un énorme merci :kissing_heart:

1 Like

Suis désolé de revenir, mais je crois que cozy-jobs-cli est aussi cassé :frowning:
Toujours en suivant le tuto, impossible de faire un test grandeur nature avec yarn dev.

yarn run v1.22.4
$ cozy-konnector-dev
manifest: debug : "scopes found"  : [
  'io.cozy.bank.operations',
  'io.cozy.bills',
  'io.cozy.files',
  'io.cozy.accounts'
]
create-cli-client: debug : Starting OAuth flow
(node:1608) UnhandledPromiseRejectionWarning: ReferenceError: window is not defined
    at OAuthClient._callee$ (/myfolder/node_modules/cozy-stack-client/dist/CozyStackClient.js:200:130)
    at tryCatch (/myfolder/node_modules/regenerator-runtime/runtime.js:45:40)
    at Generator.invoke [as _invoke] (/myfolder/node_modules/regenerator-runtime/runtime.js:274:22)
    at Generator.prototype.<computed> [as next] (/myfolder//node_modules/regenerator-runtime/runtime.js:97:21)
    at asyncGeneratorStep (/myfolder/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
    at _next (/myfolder/node_modules/@babel/runtime/helpers/asyncToGenerator.js:25:9)
    at /myfolder/node_modules/@babel/runtime/helpers/asyncToGenerator.js:32:7
    at new Promise (<anonymous>)
    at OAuthClient.<anonymous> (/myfolder/node_modules/@babel/runtime/helpers/asyncToGenerator.js:21:12)
    at OAuthClient.fetch (/myfoldernode_modules/cozy-stack-client/dist/CozyStackClient.js:233:23)
(node:1608) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:1608) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
✨  Done in 0.42s.

Le fichier fichier konnector-dev-config.json est correct, la valeur de COZY_URL pointe bien vers une bonne instance Cozy (https:// .mycozy.cloud)
J’ai bien vérifié que le -home n’est pas présent dans l’url, et le fichier package.json est définie avec les bonnes valeurs.

Une idée ? :grimacing:

Je rencontre le même problème pour lancer un de mes Konnector. La variable globale window n’existe pas en Node. Existe t-il un moyen de désactiver l’authentification OAuth et en choisir une autre (exemple l’ancienne) ?

ping @doubleface

EDIT: J’ai une bonne et une mauvaise nouvelle. La bonne, le problème est résolu. La mauvaise, je ne sais pas ce qui m’a permis de me le résoudre.

Version courte :

Il se peut que cela soit un problème de cache. Supprimez votre dossier node_modules pour être sûr de tout retélécharger et mettez à jour les versions de vos dépendances.

À titre d’information, mon fichier package.json a cette allure :

  "dependencies": {
    "cozy-doctypes": "1.72.2",
    "cozy-konnector-libs": "4.34.2"
  },
  "devDependencies": {
    "copy-webpack-plugin": "5.1.1",
    "cozy-app-publish": "0.22.3",
    "cozy-jobs-cli": "1.13.3",
    "eslint-config-cozy-app": "1.5.0",
    "git-directory-deploy": "1.5.1",
    "husky": "4.2.3",
    "jsdoc": "3.6.3",
    "konitor": "0.10.3",
    "svgo": "1.3.2",
    "webpack": "4.42.1",
    "webpack-cli": "3.3.11"
  }

Version longue : (bonne lecture ! :slight_smile:)

Je suis revenu à la version :

  • "cozy-konnector-libs": "4.34.0"
  • "cozy-jobs-cl": "1.13.0"

Car mon Konnector CIC, sur lequel j’avais fait quelques devs il y a quelques semaines, était avec ces versions et il fonctionnait. J’ai aussi supprimé mon dossier node_modules pour être sûr de repartir sur une base propre. Cependant, phénomène étrange, malgré le fait que les versions étaient identiques, j’obtenais une erreur :

create-cli-client: debug : Using saved credentials in .token.json
BaseKonnector: debug : Preparing konnector...
BaseKonnector: error : Missing id parameter
BaseKonnector: error : Account undefined does not exist
BaseKonnector: warn : Error from konnector
BaseKonnector: debug : Error caught by BaseKonnector
BaseKonnector: critical : CANNOT_FIND_ACCOUNT

Une erreur cela dit encourageante car cette fois-ci, l’authentification ne semble plus poser soucis. En fouillant dans le code source des dépendances, j’en suis arrivé à trouver que l’erreur venait de la dépendance cozy-client-js, aujourd’hui obsolète. En checkant les dernières commits de cozy-konnector-libs, j’ai vu que la dernière release (4.34.2) retire cette dépendance. Je me suis empressé de mettre à jour cette dépendance.

Là, une nouvelle erreur s’est produite :

create-cli-client: debug : Using saved credentials in .token.json
Error: Cannot find module 'cozy-doctypes'
Require stack:
- src/lib.js
- src/index.js
- src/konnector-dev.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
    at Function.Module._load (internal/modules/cjs/loader.js:840:27)
    at Module.require (internal/modules/cjs/loader.js:1019:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (src/lib.js:18:18)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Module.require (internal/modules/cjs/loader.js:1019:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (src/index.js:2:19)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Module.require (internal/modules/cjs/loader.js:1019:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at launchKonnector (node_modules/cozy-jobs-cli/src/konnector-dev.js:121:12)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async main (src/konnector-dev.js:101:3) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'src/lib.js',
    'src/index.js',
    'src/konnector-dev.js'
  ]
}
error Command failed with exit code 1.

J’ai alors ajouté la dépendance la ligne suivante dans mon package.json : "cozy-doctypes": "1.72.2"

Un coup de yarn et … tout fonctionne. Miracle !

Dernière étape, je passe de la version 1.13.0 à 1.13.3 de cozy-jobs-cli pour être à jour et tout fonctionne encore. Je pensais avoir trouvé la solution jusqu’à ce que je me rende compte que :

  • les versions des dépendances sur la branche master sont bien la 1.13.3 et 4.34.2
  • qu’après vérification dans mon bash history, j’ai bien lancé un yarn juste après mon git pull de la branche master.
  • Puis une fois à jour, j’ai lancé un yarn dev qui a donné l’erreur rencontrée par @Antho.

Ce qui fait que je ne parviens pas à trouver une logique. Serait-ce un vilain problème de cache ? Probable. Je n’ai supprimé mon node_modules qu’après quelques tentatives de debug et en même temps, retrogradez les numéros de versions des dépendances. En faisant cela, je suis tombé sur une erreur différente.

Du coup, ce que je recommanderais si vous rencontrez cette erreur. C’est d’essayer ceci :

  • supprimer votre dossier node_modules,
  • mettre les dernières versions de vos dépendances, à titre d’information mon package.json a cette allure :
  "dependencies": {
    "cozy-doctypes": "1.72.2",
    "cozy-konnector-libs": "4.34.2"
  },
  "devDependencies": {
    "copy-webpack-plugin": "5.1.1",
    "cozy-app-publish": "0.22.3",
    "cozy-jobs-cli": "1.13.3",
    "eslint-config-cozy-app": "1.5.0",
    "git-directory-deploy": "1.5.1",
    "husky": "4.2.3",
    "jsdoc": "3.6.3",
    "konitor": "0.10.3",
    "svgo": "1.3.2",
    "webpack": "4.42.1",
    "webpack-cli": "3.3.11"
  }

Bonjour @orandin,

Le problème de window est connu sur le dépot github : https://github.com/konnectors/libs/issues/673

Il a été patché sur la source, il faut patienté qu’une nouvelle maj soit publié ou bien fixé le problème directement dans le dossier node_modules (pas très propre).

Si tu souhaites corriger dans node_modules, voici la démarche à suivre. Il faut éditer le fichier node_modules/cozy-stack-client/dist/CozyStackClient.js

A la fin de la ligne 200, il simplement remplacer window.fetch par fetch.

Bad

fetcher = (0, _xhrFetch.shouldXMLHTTPRequestBeUsed)(method, path, options) ? _xhrFetch.fetchWithXMLHttpRequest : window.fetch;

Good

fetcher = (0, _xhrFetch.shouldXMLHTTPRequestBeUsed)(method, path, options) ? _xhrFetch.fetchWithXMLHttpRequest : fetch;

Je pense qu’une mise à jours ne devrait pas tardée, enfin j’espère.

Bonjour à tous, je ne sais pas si vous avez vu mais ce problème est corrigé dans la dernière version de cozy-konnector-libs et et cozy-jobs-cli. Le template de connecteur est aussi à jour

2 Likes