생계유지형 개발자 69

[NodeJS] Node Sass version 5.0.0 is incompatible with ^4.0.0.

이전에 Vue 프로젝트 실행할 때 NodeJS 15 버전과 node-sass 4.14.1 버전이 호환하지 않아서 오류가 발생했었고, node-sass를 호환 버전인 5.0.0으로 설치함으로써 해결했다. 이제 잘 되나 싶었는데 또 다른 버전 문제로 의심되는 오류가 나더라. # 오류 Node Sass version 5.0.0 is incompatible with ^4.0.0. # 원인 이번에는 node-sass와 node-loader의 버전이 상호 지원하지 않는 이유였다. 기존에 설치되어있던 각 모듈 버전은 이러했다. - NodeJS: 14 - node-sass: 4.14.1 - sass-loader: 7.3.1 여기서 NodeJS와 node-sass를 각각 15와 5.0.0으로 올렸고, 컴파일할 때 위의 ..

[NodeJS] Error: Node Sass does not yet support your current environment:

# 오류 Vue 개발을 위해 프로젝트를 실행했는데 제목과 같은 에러가 아래처럼 발생했다. Syntax Error: Error: Node Sass does not yet support your current environment: OS X 64-bit with Unsupported runtime (88) 아무래도 최근에 iOS 개발하면서 NodeJS(노드) 버전을 최신 버전으로 업데이트한게 원인이 아닐까 싶었다. 검색을 해보니 이 오류에 대해서 명쾌하게 설명을 잘 해놓은 블로그 글이 있어서 쉽게 해결할 수 있었다. # 원인 간단하게 노드 버전과 설치된 node-sass 모듈 버전이 상호 지원하지 않는 버전이기 때문이다. 내 컴퓨터에 설치된 노드와 vue프로젝트에 설치된 node-sass의 버전은 다음과 같..

[Linux] 방화벽 또는 포트 열려있는지 확인

1. 열려 있는 모든 포트 확인하기 $ netstat -nap -n : host명으로 표시 안함 -a : 모든소켓 표시 -p : 프로세스ID와 프로그램명 표시 2. 열려 있는 포트 중 LISTENING 상태인 것만 확인하기 $ netstat -nap | grep LISTEN 3. 특정 호스트의 특정 포트가 열려 있는지 확인하기 방법 1) nc 명령어 $ nc -z 211.***.***.*** 9200 - 연결 성공 시 (열려있음) Connection to 211.***.***.*** 9200 port [tcp/wap-wsp] succeeded! - 연결 실패 시 (닫혀있음) 아무 응답메세지 없음 방법 2) telnet 명령어 $ telnet 211.42.150.220 9200 - 연결 성공 시 (열려있음..

[Elasticsearch] org.apache.http.ConnectionClosedException: Connection closed

# 오류 elasticsearch 6.8 설치버전에 연동하기 위해 elasticsearch-rest-high-level-client 라이브러리 6.8.0 버전을 사용했다. 클라이언트 생성하고 client.search(SearchRequest) 메소드 호출하는 과정에서 connection closed 에러가 발생한다. org.apache.http.ConnectionClosedException: Connection closed at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput(HttpAsyncRequestExecutor.java:341) at org.apache.http.impl.nio.DefaultNHttpClientConnection..

[Elasticsearch] Exception in thread "main" java.lang.NoSuchMethodError: org.elasticsearch.action.support.IndicesOptions.ignoreThrottled()Z

# 오류 java 프로젝트에서 엘라스틱서치에 연동하기 위해 elasticsearch-rest-high-level-client 라이브러리를 사용했다. 기존에 transport:6.0.0 버전을 사용했고 엘라스틱서치 설치 버전을 올리면서 클라이언트도 버전을 올리게 되었다. 연동하려는 elasticsearch의 노드가 총 7개이고 설치된 버전이 6.8 또는 7.9 이다. 연동 가이드 문서를 따라서 구현을 했는데 소스코드를 실행하면 클라이언트 객체 초기화하는 부분에서 다음과 같은 에러가 난다. Exception in thread "main" java.lang.NoSuchMethodError: org.elasticsearch.action.support.IndicesOptions.ignoreThrottled()Z ..

[Elasticsearch] java api client 버전 6.0에서 6.8로 업그레이드

현재 기준으로 공식 엘라스틱서치 최신 안정화 버전은 7.9 버전이다. 현재 운영중인 서비스는 엘라스틱서치 6.0 버전을 설치하였으며, 스프링부트를 기반으로 개발된 서비스에서 자바 클라이언트를 사용하여 설치된 엘라스틱서치에 연결한다. 자바 클라이언트 버전은 6.0.0 이다. 설치된 엘라스틱서치의 노드들을 6.8 -> 7.9 버전으로 업그레이드(진행 중) 하면서 6.0.0 버전의 자바 클라이언트를 사용할 수 없게 되었다. 자바 클라이언트 버전을 6.0.0 -> 7.9로 일괄 업그레이드 하면 좋겠지만 모든 노드들을 전환하는데 시간이 걸리기 때문에 6.8 버전과 7.9 버전을 호환할 수 있는 6.8 버전으로 클라이언트를 변경하기로 했다. 또한 기존의 6.0 버전 자바 클라이언트는 Java API 였다면 이번에는..

[Linux] /bin/sh^M: bad interpreter: No such file or directory

# 오류 /bin/sh^M: bad interpreter: No such file or directory xcode에서 ios 앱 빌드하면서 발생한 오류지만 사실상 Linux 실행오류이다. 아래쪽에 빨간색 영역에 있는 메세지 중에서 /Users/user/...../Pods-MobileConnect-frameworks.sh 파일이 문제이다. # 원인 이는 십중 팔구 윈도우에서 작성한 스크립트 파일을 Linux (필자는 Mac)에서 실행했기 때문에 나타나는 오류이다. 파일 내용 중 라인 끝에 있는 개행문자가 달라서 발생하는 문제인데 /bin/sh^M 이라는 오류 문구에 나와있듯이 ^M 문자 때문에 발생하는 오류이다. 문제가 발생하는 스크립트 파일에서 ^M 이라는 문자를 모두 지워야 한다. # 해결 1) 바이..

[ios] 배포환경 별 빌드설정 달리 하기

1) Project Configuration 생성 Target은 프로젝트에서 무료앱, 유료앱과 같은 상품별 분기가 발생할때 사용하는 것이고 개발, 운영, 스테이징 등의 배포환경을 분리할 때는 Build Configuration 을 활용한다. PROJECT > Info 탭에 들어가면 Configurations 항목이 있고 로컬 빌드 및 실행에 사용되는 Debug와 배포할 때 사용되는 Release 두 개가 기본으로 존재한다. Debug, Release 외에 다른 빌드환경이 필요하다면 + 를 눌러서 기존 설정을 복사(Duplicate)하는 형태로 생성한다. 예를 들면, Duplicate "Release" Configuration 하여 "Stage"라는 설정을 생성할 수 있다. 배포환경을 분리하는 이유는 대부..

[Mysql] Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

# 오류 단순한 JOIN이 포함된 조회쿼리를 실행했는데 아래와 같은 오류가 난다. [ERROR] Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=' 0.0043 sec select * from site_msg s join footer f on (s.`uuid` = f.`html`) where s.target_field = 'html' LIMIT 0, 1000Error Code: 1267. # 원인 JOIN 조건에 있는 각 테이블의 컬럼의 문자셋이 상이해서 발생하는 오류라고 한다. # 해결 데이터베이스와 테이블의 문자셋을 변경했다. -- 데이터베이스 문자셋 변경 al..