➜ server git:(master) ✗ npm start
> cmarket-database-server@1.0.0 start
> nodemon app.js
[nodemon] 2.0.13
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
🚀 Server is starting on 4000
/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/db/index.js:11
if (err) throw err;
^
Error: connect ECONNREFUSED ::1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
--------------------
at Protocol._enqueue (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mysql/lib/Connection.js:116:18)
at Object.<anonymous> (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/db/index.js:10:5)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:999:19)
at require (node:internal/modules/cjs/helpers:102:18) {
errno: -61,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 3306,
fatal: true
}
Node.js v17.8.0
[nodemon] app crashed - waiting for file changes before starting...
➜ server git:(master) ✗ npm test
> cmarket-database-server@1.0.0 test
> export NODE_ENV=test && mocha spec/server-spec.js --timeout 5000 --exit && unset NODE_ENV
🗄 Cmarket Database
1) "before all" hook in "🗄 Cmarket Database"
2) "before all" hook in "🗄 Cmarket Database"
3) "after all" hook in "🗄 Cmarket Database"
0 passing (37ms)
3 failing
1) 🗄 Cmarket Database
"before all" hook in "🗄 Cmarket Database":
Uncaught Error: connect ECONNREFUSED ::1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
--------------------
at Protocol._enqueue (node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (node_modules/mysql/lib/Connection.js:116:18)
at Object.<anonymous> (db/index.js:10:5)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:999:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (models/index.js:1:12)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:999:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (controllers/index.js:1:16)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:999:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Context.<anonymous> (spec/server-spec.js:23:24)
at processImmediate (node:internal/timers:466:21)
2) 🗄 Cmarket Database
"before all" hook in "🗄 Cmarket Database":
done() called multiple times in hook <🗄 Cmarket Database "before all" hook in "🗄 Cmarket Database"> of file /Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/spec/server-spec.js; in addition, done() received error: Error: connect ECONNREFUSED ::1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
--------------------
at Protocol._enqueue (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mysql/lib/Connection.js:116:18)
at Context.<anonymous> (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/spec/server-spec.js:31:18)
at callFnAsync (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mocha/lib/runnable.js:394:21)
at Hook.Runnable.run (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mocha/lib/runnable.js:338:7)
at next (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mocha/lib/runner.js:510:10)
at Immediate.<anonymous> (/Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/node_modules/mocha/lib/runner.js:572:5)
at processImmediate (node:internal/timers:466:21) {
errno: -61,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 3306,
fatal: true
}
Error: done() called multiple times in hook <🗄 Cmarket Database "before all" hook in "🗄 Cmarket Database"> of file /Users/sg.yksv77/Desktop/섹션3/im-sprint-cmarket-database/server/spec/server-spec.js; in addition, done() received error: Error: connect ECONNREFUSED ::1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
--------------------
at Protocol._enqueue (node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (node_modules/mysql/lib/Connection.js:116:18)
at Context.<anonymous> (spec/server-spec.js:31:18)
at processImmediate (node:internal/timers:466:21) {
errno: -61,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 3306,
fatal: true
}
at Handshake.<anonymous> (node_modules/mysql/lib/Connection.js:526:10)
at Handshake._callback (node_modules/mysql/lib/Connection.js:488:16)
at Handshake.Sequence.end (node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
at Protocol.handleNetworkError (node_modules/mysql/lib/protocol/Protocol.js:369:14)
at Connection._handleNetworkError (node_modules/mysql/lib/Connection.js:418:18)
at Socket.emit (node:events:527:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
3) 🗄 Cmarket Database
"after all" hook in "🗄 Cmarket Database":
TypeError: Cannot read properties of undefined (reading 'close')
at Context.<anonymous> (spec/server-spec.js:243:9)
at processImmediate (node:internal/timers:466:21)
Error: connect ECONNREFUSED ::1:3306
MySQL이 제대로 설치됐고, 실행까지 완료하였는지 확인한다.
1) MySQL 설치
```jsx
// Homebrew를 이용한 설치
brew install mysql
brew info mysql
```
2) MySQL 서비스 시작
brew services start mysql
3) MySQL 접속
mysql -u root -p
그러나, 현재 MySQL은 정상적으로 설치 및 실행까지 완료 되어 있음에도 에러가 발생했기 때문에, 다른 원인을 확인해야 한다.
npm start에서 발생한 에러 코드의 하단을 확인하면
Node.js v17.8.0
인것을 확인할 수 있다. 이유는 정확히 알 수 없지만,
node 버전이 LTS인 v16.14.2가 아닌 것이 원인인 듯 하다.
이에, 두번째 해결방법을 사용하였다.
node 버전 변경 v17.8.0 -> v16.14.2
1) nvm 설치 확인
nvm --version
* command not found 에러 발생
* nvm 설치가 되지 않을 것으로 예상되어 nvm를 다시 설치하기로 했다.
2) nvm 설치
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
brew update
brew install wget
3) nvm 설치 확인
아래와 같은 화면이 나오면 성공적으로 설치가 됐으며, 터미널을 닫고, 새로 열면 명령어 nvm을 사용 할 수 있게 된다.
4) node.js 설치(M1)
2020년 말 이후 출시된 M1 칩을 이용하는 Mac은 15버전 이상의 node.js를 사용해야한다. 15버전 미만의 버전을 사용할 경우, 제대로 설치되지 않을 수 있다.
nvm install 15
5) node 버전 적용
#버전 확인
nvm ls
nvm use 16.14.2
➜ server git:(master) ✗ node -v
v17.8.0
➜ server git:(master) ✗ nvm ls
v12.18.3
v14.17.0
v15.14.0
v16.13.0
v16.14.2
v17.9.0
-> system
default -> system
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v17.9.0) (default)
stable -> 17.9 (-> v17.9.0) (default)
lts/* -> lts/gallium (-> v16.14.2)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.19.1 (-> N/A)
lts/gallium -> v16.14.2
➜ server git:(master) ✗ nvm use 16.14.2
Now using node v16.14.2 (npm v8.5.0)
➜ server git:(master) ✗ node -v
v16.14.2
➜ server git:(master) ✗ npm start
> cmarket-database-server@1.0.0 start
> nodemon app.js
[nodemon] 2.0.13
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
🚀 Server is starting on 4000