Bin/ember-cli se plaint de node 18.18.1

J’essaie d’exécuter mon installation de développement sur mon ordinateur portable Linux.

J’ai un script qui récupère les versions de Ruby, imagemagick et nodejs à partir de discourse_docker et les définit avec asdf. Voici un extrait :

  RUBY_VERSION=$(grep  \"^ARG RUBY_VERSION\" $DISCOURSE_DOCKER_SRC/image/base/slim.Dockerfile |cut -d'=' -f2)
  echo \"GOT RUBY VERSION!! $RUBY_VERSION\"
  asdf install ruby $RUBY_VERSION
  asdf global ruby $RUBY_VERSION
  IMAGE_MAGICK_VERSION=$(grep -e ^IMAGE_MAGICK_VERSION ~/src/discourse-repos/discourse_docker/image/base/install-imagemagick|cut -d'\"' -f2)
  echo \"GOT IMAGE_MAGICK_VERSION: $IMAGE_MAGICK_VERSION\"
  asdf install imagemagick $IMAGE_MAGICK_VERSION
  asdf global imagemagick $IMAGE_MAGICK_VERSION
  # 2023-04-24 debian and pop!os have different nodejs versions
  NODE_VERSION=$(docker run discourse/base:release bash -c 'node --version'|cut -d'v' -f2)
  #NODE_VERSION=$(grep node ~/src/discourse-repos/discourse/.tool-versions|awk '{print $2}')
  echo \"GOT NODEJS version: $NODE_VERSION\"
  asdf install nodejs $NODE_VERSION
  asdf global nodejs $NODE_VERSION

Mais lorsque j’exécute bin/ember-cli, j’obtiens ceci :

./bin/ember-cli 
warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
error ember-template-lint@6.0.0: The engine "node" is incompatible with this module. Expected version "^18.18.0 || ^20.9.0 || >=21.1.0". Got "18.17.1"
error Found incompatible module.

18.17.1 est la version dans Discourse. Pourquoi ai-je besoin d’une version différente pour le développement que celle utilisée par Discourse ?

Lorsque je mets à jour vers 18.18.0 et que j’exécute ensuite ember-cli, j’obtiens une erreur de syntaxe : « SyntaxError: Unexpected token in JSON at position 219260 ». . . quelque chose que je n’arrive pas tout à fait à comprendre.

Que dois-je essayer maintenant ?

Existe-t-il un moyen fiable de vérifier que mon environnement de développement est approprié pour le développement ? Il semble qu’une fois par mois, je passe une heure ou plus à essayer de faire fonctionner mon système de développement. Est-ce que les gens (comme @sam et @falco) utilisent vraiment l’environnement de développement Docker ? Peut-être devrais-je cibler ce conteneur pour obtenir les versions de Ruby et Node ?

Je choisis toujours la dernière version LTS pour NodeJS via ASDF.

Je n’exécute pas mon environnement de développement sur Docker.

Je peux comprendre comment cela pourrait être plus facile pour les débutants complets, mais ce serait trop compliqué pour mes préférences personnelles.

1 « J'aime »

[quote=“Falco, post:2, topic:315187, username:Falco”]allez toujours avec la dernière LTS pour NodeJS via ASDF.
[/quote]

Génial. C’est logique. Je suppose qu’il est mis à jour assez infrequently pour que vous le fassiez à la main.

J’essaierai ça demain.

[quote=“Falco, post:2, topic:315187, username:Falco”]serait trop gênant pour mes préférences personnelles.
[/quote]

C’est comme ça que nous sommes pareils. :wink:

1 « J'aime »

Génial ! L’utilisation de Node 20.9.0 a de nouveau fait fonctionner ma build de développement. Je suis un peu confus quant à la raison pour laquelle cette version fonctionnerait et pas celle du conteneur Discourse, et je me demande comment les choses fonctionneront dans le conteneur avec 18.quelque chose alors que cela échoue sur ma configuration de développement, mais je suppose que je verrai ce qui se passe.

Merci pour votre aide.