본문 바로가기
개발일지/임시카테고리

node.js 시작!! 그리고 yarn init error (ERROR: init is not COMMAND nor fully qualified CLASSNAME.)

by 다니엘의 개발 이야기 2023. 2. 10.
320x100

#1 서론

 

정말 수백번을 고민했던 것 같다.

장고를 끌고가야하나, 버리고 다른 걸로 가야하나.

그만큼 장고는 너무 매력이 많은 툴이였다.

하지만 툴 자체는 매력이 많지만 자바진영의 스프링은 설계, API 위주로 진짜 백엔드를 하는 느낌이고

JS 진영의 node.js등에 있어서도 API 등 설계에 대해서 기본적으로 알려주는데 반해서

장고는 국내외를 모두 포함해서 블로그 만들기가 99%다

1%마저도 쇼핑몰이 있긴한데 그건 너무 옛날이라서 약간만 설정이 달라도 작동도 안될 뿐더러

간편결제등으로 익숙해진 한국인인 나의 시각에서 봤을때, 너무 구시대적인 결제 시스템을 탑재하는 예제 뿐이였다.

사실 그것보다 더 큰 문제는, 어찌저찌 그런것들을 반복 숙달로 익힌다 하더라도 입문, 초급, 중급, 고급으로 가는 길에서

입문과 초급까지의 길만보이고 그 다음의 길은 보이지가 않는다는게 가장 큰 문제였다.

 

정말 신기하게도 장고에서는 모델설계나, 전체적인 설계에 대해서 딱 눈에 들어오게 알려주는 책과 강의를 단한건도 보지 못했다. "하다보면 알게된다." 뭐 그런 취지인것같은데, 솔직히 핑계라고 생각한다. 책이나 강의의 30%이상은 장고 공식문서에 나온 튜토리얼 등을 고대로 가져와서 설명해주는 것들도 많고, 아무튼 장고로 중급, 고급까지 가신 분들은 정말 대단하다고 생각된다.

그리고 장고는 파이썬 기반이니만큼 연동할 수 있는 여러가지들도 많을텐데 중도 탈락해서 아쉽긴 하다.

그럼에도 나는 상향평준화를 단계적으로 밟아가고 싶지, 불친절하고 유저가 점점 줄어드는 게임을 하고싶진 않다.

 

암튼 node.js는 Django 공부에서 느낀 해결되지 않는 갈증들이 너무 당연하게 있는 커리큘럼인데다가 풀스택으로 발전하기에 용이하다는 점등이 매력적이여서 시작하게 되었다.


#2 yarn init error

 

선생님이 이제 시작하는 강의에서 json 파일을 생성하기 위해서

 yarn init

이라고 터미널에 입력하셨을때, 잘 작동되었다.

하지만 나는

(base) ➜  01-05-token-count-api-facade-import git:(master) ✗ yarn -h   
Usage: yarn [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    yarn [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class

  OPTIONS is none or any of:

--buildpaths                       attempt to add class files from build tree
--config dir                       Hadoop config directory
--daemon (start|status|stop)       operate on a daemon
--debug                            turn on shell script debug mode
--help                             usage information
--hostnames list[,of,host,names]   hosts to use in worker mode
--hosts filename                   list of hosts to use in worker mode
--loglevel level                   set the log4j level for this command
--workers                          turn on worker mode

  SUBCOMMAND is one of:


    Admin Commands:

daemonlog            get/set the log level for each daemon
node                 prints node report(s)
rmadmin              admin tools
scmadmin             SharedCacheManager admin tools

    Client Commands:

applicationattempt   prints applicationattempt(s) report
app|application      prints application(s) report/kill application/manage long running application
classpath            prints the class path needed to get the hadoop jar and the required libraries
cluster              prints cluster information
container            prints container(s) report
envvars              display computed Hadoop environment variables
fs2cs                converts Fair Scheduler configuration to Capacity Scheduler (EXPERIMENTAL)
jar <jar>            run a jar file
logs                 dump container logs
nodeattributes       node attributes cli client
queue                prints queue information
schedulerconf        Updates scheduler configuration
timelinereader       run the timeline reader server
top                  view cluster information
version              print the version

    Daemon Commands:

nodemanager          run a nodemanager on each worker
proxyserver          run the web app proxy server
registrydns          run the registry DNS server
resourcemanager      run the ResourceManager
router               run the Router daemon
sharedcachemanager   run the SharedCacheManager daemon
timelineserver       run the timeline server

SUBCOMMAND may print help when invoked w/o parameters or with -h.

이런 에러가 떴다.


#3 해결 과정

 

검색을 하다보니 yarn이라는 것은 비단 node.js에서만 쓰이는 것이 아니라 hadoop에서도 사용될 수 있으니,

이것들이 충돌되기 때문에 발생하는 문제라고 한다.

이때 문득 생각이 났다. 예전에 데이터 엔지니어링을 시도할때 hadoop을 설치했다는 것을.

그래서 나는

brew list

라고 입력해서 리스트를 봤다.

hadoop이 있었고

brew uninstall hadoop

으로 hadoop을 삭제했다.

그리고 다시

yarn init

을 해주었더니

zsh: command not found: yarn

라고 나왔다.

 

이 메세지를 보자마자 생각이 들었다.

"아 yarn이 하둡에 껴있던게 맞았구나"

 

그리고 어찌저찌 또 정보를 찾아봤다.

섵부르게 yarn을 설치했다가는 이와같은 꼬이는 문제가 또 있을 수도 있음을 우려했던 것이였다.

그래도 결과적으로 yarn 공식문서를 보니

yarn을 설치하면 된다고 해서

brew install yarn

으로 다시 yarn을 별도로 설치해주었고

이제는 정상적으로 작동이 된다.


#4 남은 과제

 

추후에 hadoop을 하기전에는 node.js의 yarn과 hadoop의 yarn이 충돌되지 않게끔

캡슐화 하는 방법도 연구를 해야겠다.

(지금 당장은 중요한게 아니니 패스!!)

300x250