TIL 23-06-13

level·2023년 6월 13일

TIL

목록 보기
26/95

포트에러 해결

const router = express.Router(); // routes/goods.js에 라우터 선언부가 없어서 추가
module.exports = router; // export가 없어서 추가

schemas/goods.js에 아무것도 없어서 에러 발생 -> 코드 추가

몽고디비 에러 해결

 mongoose
    .connect("mongodb://127.0.0.1:27017/spa_mall")

app.js에서 localhost -> 127.0.0.1로 바꿔줌


  • .gitignore: node_modules 내용은 어차피 git 내려받고 설치해주면 되기때문에 그 많은 내용을 다 깃에 올려놓을 필요 없음. 이 파일은 무시하라고 표시해주는것. 작업폴더에서 .gitignore 파일 만든 뒤 https://www.toptal.com/developers/gitignore 사이트에서 node검색후 모두 복사해서 붙여넣기

  • 배포 시 깃 사용
    - 처음 배포하는 서버일 때
    git clone -> npm install -> 서버 켜기

    • 배포했던 서버를 최신 코드로 재시작하고 싶을 때
      git pull -> npm install -> 서버 재시작

AWS 배포하기

EC2 Instance 생성

인스턴스 시작 -> Ubuntu Server 20.04 LTS (프리 티어 사용 가능) -> t2.micro (프리 티어 사용 가능) -> 시작하기 -> 새 키 페어 생성 -> 키 페어 이름 입력 -> 키 페어 다운로드 -> 인스턴스 시작

EC2 Instance에 접속하기

다운로드 폴더에서 gitbash 실행

ssh -i 키페어 ubuntu@아이피

ssh -i /path/my-key-pair.pem ubuntu@13.125.250.20

Key fingerprint 관련 메시지가 나올 경우 Yes를 입력
git bash를 종료할 때는 exit 명령어를 입력하여 ssh 접속 끊기

리눅스 명령어

ls: 내 위치의 모든 파일을 보여준다.

pwd: 내 위치(폴더의 경로)를 알려준다.

mkdir: 내 위치 아래에 폴더를 하나 만든다.

cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.

cd .. : 나를 상위 폴더로 이동시킨다.

cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기

rm -rf [지울 것]: 지우기

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리자 권한이 있는 계정으로 접속한다. (exit 입력하면 관리자 계정에서 로그아웃)

EC2 Instance에 Node.js 설치

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

sudo apt-get install -y nodejs

설치 및 설치 확인

node -v
npm -v

EC2 Instance에 MongoDB 설치

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo "deb [ arh=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

sudo apt-get update

sudo apt-get install -y mongodb-org

MongoDB 실행

sudo service mongod start

EC2 Instance에서 서버 실행

Security groups -> 인바운드 규칙 편집 -> Add rule -> 유형: HTTP / 소스: Anywhere-IPv4 ->

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

-> 접속 확인

pm2 설치 (서버 안꺼지게)

sudo -s
npm install -g pm2 // -g:global : 전역 프로그램으로 설치하겠다
pm2 start app.js
pm2 delete 0 // 실행 프로젝트 종료
pm2 restart app.js. # app.js를 재시작합니다.
pm2 restart [idNumber] 

# 0번 ID의 서비스 (app)을 재실행합니다.
pm2 restart 0
# 현재 서비스들의 목록을 출력합니다.
pm2 list 
# 0번 ID의 서비스(app) 을 하는 명령어입니다. 
pm2 delete 0
pm2 log // 실행 서비스들의 로그 출력

JS 객관식 문제 오답노트

문제 4. "Hello" / 2의 결과값은 무엇인가요?
나의 답 : undefined
정답 : NaN

문제 17. 다음 코드에서 나머지 매개변수(Rest Parameter)와 관련된 내용을 고르세요.
나의 답 : sum 함수는 첫 번째 인수와 나머지 인수들을 더한 값을 반환합니다.
정답 : sum 함수는 임의 개수의 인수를 받아서 모두 더한 값을 반환합니다.

문제 20. 다음 중 bind 메서드와 call 메서드의 차이점은 무엇인가요?
나의 답: bind 메서드는 함수를 호출하지 않고 새로운 함수를 생성하며, call 메서드는 함수를 호출합니다.
정답 : bind 메서드는 함수의 컨텍스트를 변경하고, call 메서드는 함수의 인자를 변경합니다.

문제 26. Promise 객체의 catch 메서드는 다음과 같은 상황에서 실행될까요?
나의 답 :Promise 체인 중간에 발생하는 오류를 처리하기 위해 호출됩니다.
정답:Promise가 거부되었을 때 호출됩니다.

문제 27. 자바스크립트 비동기 처리의 내용 중, async와 await의 역할로 올바른 것은 무엇인가요?
나의 답: async는 함수 내에서 동기적으로 실행되어야 하는 부분을 지정하고, await는 동기 작업의 결과를 기다리는 역할을 합니다.
정답: async는 함수 내에서 비동기적으로 실행되어야 하는 부분을 지정하고, await는 비동기 작업의 결과를 기다리는 역할을 합니다.

0개의 댓글