【NestJS初心者】管理画面API作ったよって話① 〜環境構築って大変〜

Nest.jsに慣れるために
Nest.jsを使って、管理画面APIを作ってみたいと思います〜！

#### Let’s start💻

## 環境
- Node.js v15.0.0 -> v16.10.0
- MySQL
- macOS 


##インストール
以下のコマンドでNest CLIをインストールし、プロジェクトを作成します。

```
$ npm i -g @nestjs/cli
$ nest new TodoApp     　　　// nest new [プロジェクト名]
⚡  We will scaffold your app in a few seconds..

CREATE .....
CREATE .....
CREATE .....
.
.
.
```
![スクリーンショット 2022-02-04 20.07.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518047/792c0652-a96c-92f5-6068-1b97da092b3f.png)
どのパッケージマネジャーを使うかと聞かれたので、`yarn`を選択しました。

Installation in progress....
![スクリーンショット 2022-02-04 20.07.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518047/40df0b6b-5371-5ced-2369-796d382d2e61.png)

####なんか失敗してる。_:(´ཀ`」 ∠):
でも、Thanks言われてる、、、( ・∇・)え？

調べてもよくわからなかった。ので、とりあえず、プロジェクトを開いてみる。

![スクリーンショット 2022-02-04 20.31.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518047/ec3c063c-fb18-9bac-f122-01ad66e69e11.png)

#### プロジェクトは自動生成はされているっぽい。

```
$ yarn run start 
```

で動くか試してみる。
![スクリーンショット 2022-02-04 20.11.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518047/616c00bd-0ee5-0715-471f-97e18addd84b.png)
#### めっちゃエラー出た。_:(´ཀ`」 ∠):

さっき失敗してたから？

まぁ、@nestjs/commonとかのパッケージ追加すれば良いのでしょ？
ってことで追加！

```
$ yarn add @nestjs/common
```



![スクリーンショット 2022-02-04 20.12.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518047/29fe286b-b07a-77fc-46c2-c01e854e9d38.png)

#### 怒られた。_:(´ཀ`」 ∠):
node のバージョンが違う...？

```
$ node -v 
```

したら、`v15.0.0`だった。( ^ω^ )
いうて、警告の中で　` Got "15.0.0"`って教えてくれてた笑
###プロジェクト作成の際にこけてたのもこれが原因っぽい。
。。。ってことで！


## nodenvでnodeバージョンを変更しよう！



```
 $ brew install nodenv
```
(brewをインストールしてない人は、先にインストールが必要です。)

利用しているシェルに`eval "$(nodenv init -)"`を追記。
　

```
# vim ~/.bash_profile
eval "$(nodenv init -)"
```

（私は`~/.bash_profile`でした。）
人によっては、`~/.bashrc`や`~/.zshrc`かな？

上記を設定したら、一旦ターミナルを閉じる。
再度、ターミナルを開いて

```
$ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
```
↑このカールを実行し

```
Checking for `nodenv' in PATH: /usr/local/bin/nodenv
Checking for nodenv shims in PATH: OK
Checking `nodenv install' support: /usr/local/bin/nodenv-install (node-build 4.9.43)
Counting installed Node versions: 1 versions
Auditing installed plugins: OK
```

pathがうまく設定されていなかったら、シェルへの設定が上手くいってないので、`eval "$(nodenv init -)"`の追記が上手くいっているか再確認が必要！

ここまで上手くいったら、
指定のバージョンのNode.jsをインストールする

```
# インストール可能なNode.jsのバージョン一覧
$ nodenv install -l

#一覧が出てきます
…
16.3.0
16.4.0
16.4.1
16.4.2
16.5.0
16.6.0
16.6.1
16.6.2
16.7.0
16.8.0
16.9.0
16.10.0
…

# 自分がインストールしたいバージョンを選んでインストールする
# 今回は16.10.0を採用
$ nodenv install 16.10.0

# nodenvに認識させる
$ nodenv rehash

```

Node.jsのバージョンを切り替える

```
# インストールされているNode.jsのバージョン一覧
$ nodenv versions
16.10.0

# 現在のディレクトリ配下で利用するNode.jsのバージョンのみを設定する
$ nodenv local 16.10.0

# システム全体で利用するNode.jsのバージョンを設定する
$ nodenv global 16.10.0

#Node.jsバージョンが変わったか、確認
$ node -v
v16.10.0
#変わった！！
```

Node.jsのバージョン変更は以上で完了！✨ 


## さっき警告で怒られていた、パッケージを追加していく！

```
$ yarn add @nestjs/common
$ yarn add @nestjs/core
```
✨  Doneしたら

もう一度

```
 $ yarn run start
```

```typescript
[Nest] 93458  - 2022/02/04 21:48:56     LOG [NestFactory] Starting Nest application...
[Nest] 93458  - 2022/02/04 21:48:56     LOG [InstanceLoader] AppModule dependencies initialized +85ms
[Nest] 93458  - 2022/02/04 21:48:56     LOG [RoutesResolver] AppController {/}: +6ms 
[Nest] 93458  - 2022/02/04 21:48:56     LOG [RouterExplorer] Mapped {/, GET} route +3ms 
[Nest] 93458  - 2022/02/04 21:48:56     LOG [NestApplication] Nest application successfully started +2ms
```
###無事起動できた〜！！💓

ブラウザで`http://localhost:3000/`にアクセス。
`Hello Wold`が表示されていたら、
環境構築は完了です！

p.s.
なんか、環境構築って、一発で上手くいったことない。。。
環境構築する時点で挫折して、自分で開発するのやめる人も多そう。（経験済み）



・・・
次は、TypeOrmを使ってMySQLに接続していきます〜( ´∀｀)