bin/ember-cli가 node 18.18.1을 문제 삼음

Linux 노트북에서 개발용 설치를 실행하려고 하고 있습니다.

discourse_docker에서 Ruby, imagemagick, nodejs의 버전을 가져와 asdf로 설정하는 스크립트가 있습니다. 그 중 일부代码如下:

  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

하지만 bin/ember-cli를 실행하면 다음과 같은 오류가 발생합니다:

./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은 Discourse에서 사용하는 버전입니다. 왜 개발에는 Discourse가 실행하는 것과 다른 버전이 필요한가요?

18.18.0으로 업데이트한 후 ember-cli를 실행하면 "SyntaxError: Unexpected token in JSON at position 219260"라는 오류가 나는데… 정확히 무슨 의미인지 알 수 없습니다.

이제 무엇을 시도해야 할까요?

개발 환경이 개발에 적합한지 확인할 수 있는 신뢰할 수 있는 방법이 있을까요? 한 달에 한 번 이상은 개발 시스템이 아예 작동하지 않아서 고치느라 1시간 이상을 보내는 것 같습니다. 사람들이(예: @sam, @falco) 실제로 docker 개발 환경을 사용하고 있을까요? 아마 그 컨테이너를 대상으로 Ruby와 Node 버전을 가져오는 것이 좋을까요?

저는 항상 ASDF를 통해 NodeJS의 최신 LTS 버전을 사용합니다.

저는 개발 환경을 Docker에서 실행하지 않습니다.

완전한 초보자에게는 더 쉬울 수 있다는 점은 이해가 되지만, 제 개인적인 취향에는 너무 번거로울 것 같습니다.

좋아요. 그게 말이 되네요. 업데이트 주기가 충분히 길어서 수동으로 관리하는 거겠죠.

내일 한번 시도해볼게요.

우린 그 점에서เหมือนกัน이죠. :wink:

좋습니다! Node 20.9.0을 사용하니 개발 빌드가 다시 작동합니다. 왜 그 버전은 작동하는데 Discourse 컨테이너에 있는 버전은 작동하지 않는지 조금 혼란스럽고, 제 개발 환경에서 실패하는 상황에서 컨테이너의 18.x 버전에서는 어떻게 작동할지 궁금합니다. 하지만 어떤 일이 일어날지 지켜보겠습니다.

도움 주셔서 감사합니다.