node.js

nodenvのインストール

環境

ホスティングサービス: さくらのVPS
CentOS Linux release: 7.6.1810 (Core)
node: v6.17.1 -> 14.0.0
express: 4.16.1
nginx: 1.20.1
pm2: 5.1.2
nodemon: 2.0.13

前回の記事より、ひとまずexpressの開発環境を整えるにあたって、BrowserSyncを導入しようと考えた。

それと同時に、nodemonを使ってexpressを起動しようとした際、エラーが出て起動しなかった。

nodemonのインストールは以下の記事の下の方に書いていた。

Browser-syncとExpressが同時に動かない問題はファイヤーウォールが原因だった

プロジェクトディレクトリに入って、下記を実行

node ./node_modules/.bin/nodemon ./bin/www

するとこんなエラーが

/home/user/sandbox/sample_app/node_modules/chokidar/index.js:162
  async remove(item) {
        ^^^^^^

SyntaxError: Unexpected identifier
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object. (/home/user/sandbox/sample_app/node_modules/nodemon/lib/monitor/watch.js:6:16)

async remove errorを手がかりに探すと、下記の記事がヒットした。

javascript – How to fix Nodemon “async remove {}” syntax error? – Stack Overflow

記事の内容を見ると、単純にnodeのバージョンが古すぎるらしいことがわかった。

なるほど、と自分のノードのバージョンを見なおしてみたらv6.17.1とのこと。これが古いのかどうかもわからない。

ひとまずnodeの新しいバージョンを試してみる必要がある、ということでnodenvをインストールする。

下記の記事を参考にさせていただいた。

Nodenv環境を用意する – Qiita

nodenv の実行ファイル群をホームディレクトリにコピーする

git clone git://github.com/nodenv/nodenv.git ~/.nodenv

node環境構築用プラグインのnode-buildをnodenv環境のプラグインフォルダにコピーする

git clone git://github.com/nodenv/node-build.git ~/.nodenv/plugins/node-build

nodenvへパスを通す設定を.bash_profileへ追加

(対象ファイルや書き方は環境に応じて要変更)

echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bash_profile

nodenvの利用開始コマンドを.bash_profileへ追加

echo 'eval "$(nodenv init -)"' >> ~/.bash_profile

追加内容を適用する

(公式はシェルの再起動としている)

source ~/.bash_profile

その後、nodeの目的バージョンをインストール。ひとまず何がいいのかわからないので14.0.0をインストールしてみた。

nodenv14のインストール

nodenv install 14.0.0

現在のディレクトリにnode-v14.0.0を適用

nodenv local 14.0.0

ここで、ノードのバージョンを確認してみるとノードのバージョンが切り替わっていなかった。

node -v
# 6.17.1

おかしいなと首をかしげたが、tmuxの立ち上げなおすとちゃんと認識されていた。
やはり公式の言う通り、sourceだけではバージョンの切り替えはうまくいかなかった模様?

その後、改めて下記を実行すると

node ./node_modules/.bin/nodemon ./bin/www

nodemonによってexpressを起動することができた。
結局、前回の記事でpm2を動かせなかったのも、nodeのバージョンが古すぎたせいだったこともわかった。

スポンサードサーチ

さくらVPS上にNode.jsとExpressをインストールしてnginxでリバースプロキシするまで前のページ

CentOSのfirewalldが起動失敗、復帰まで次のページ

最近の記事

Twitter

PAGE TOP