Mac上の Vue CLI を利用して作成したファイルを CentOS-7.x環境に持っていったらはまった

スポンサーリンク

sh: vue-cli-service: command not found

下記の操作を行って、CentOS-7.x 環境上で Vue.js を使ったアプリケーションを配置しました。

  • Mac 上で Vue CLI を使ってコンテンツを作成
  • 上記のファイル一式を git push してリモートリポジトリに保存
  • 上記を git clone して、CentOS-7.x 環境に展開

この状態で、Vueプロジェクトディレクトリに移動して npm run serve で動かそうとしたところ、下記が出力されて実行できませんでした。

sh: vue-cli-service: command not found

Web 上で情報を探してみると、どうやら node_modules と package-lock.json を一度削除するのが良いようなので、下記を実施しました。

% \rm -rf node_modules package-lock.json && npm install

vue コマンドが動いていない

上記の npm install の結果、いろいろとファイルはインストールされましたが、エラーも出ているような??
それでも念のため npm run serve してみましたが、エラーメッセージは変わったもののやはり動きません。

ここで、そもそも vue コマンドは動いているのかと思って確認してみると、、、

% vue --version
/usr/lib/node_modules/@vue/cli/node_modules/open/index.js:16
const wslToWindowsPath = async path => {
                               ^^^^

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.<anonymous> (/usr/lib/node_modules/@vue/cli/node_modules/@vue/cli-shared-utils/lib/openBrowser.js:9:14)

vueコマンドが本格的に動いていませんでした。。。

それなら!と思って Vue CLI をインストールし直してみましたが、状況は変わらず。

npm の入れ直し

ここでようやく npm が悪いのかと思い当たりました。
まずは、バージョン確認。

# npm version
{ npm: '3.10.10',
  ares: '1.10.1-DEV',
  http_parser: '2.8.0',
  icu: '50.1.2',
  modules: '48',
  napi: '3',
  node: '6.17.1',
  openssl: '1.0.2k-fips',
  uv: '1.38.0',
  v8: '5.1.281.111',
  zlib: '1.2.7' }

ちなみに、Mac 環境のバージョンは下記。

% npm version
{
  npm: '6.9.0',
  ares: '1.15.0',
  brotli: '1.0.7',
  cldr: '35.1',
  http_parser: '2.8.0',
  icu: '64.2',
  llhttp: '1.1.3',
  modules: '72',
  napi: '4',
  nghttp2: '1.38.0',
  node: '12.2.0',
  openssl: '1.1.1b',
  tz: '2019a',
  unicode: '12.1',
  uv: '1.28.0',
  v8: '7.4.288.21-node.17',
  zlib: '1.2.11'
}

全然違う。。。。
CentOS-7.x の npm のバージョンはかなり古いようです。
そこで、CentOS-7.x の npm の入れ直しを行います。

古い npm を削除

まず、今インストールされている古い npm を削除します。

# yum -y remove nodejs

新しい npm をインストール

CentOS-7.x のリポジトリからでは古い npm がインストールされてしまうので、node.js のサイトからインストールをします。
下記にインストール方法の記載があります。
https://github.com/nodesource/distributions/blob/master/README.md

root 権限で下記を実行するとインストールされます。
今回は、Mac 環境と同じく、NodeJS 12.x をインストールしました。

# curl -sL https://rpm.nodesource.com/setup_12.x | bash -
# yum install -y nodejs

インストール後、確認すると下記の結果となりました。

# npm version
{
  npm: '6.14.5',
  ares: '1.16.0',
  brotli: '1.0.7',
  cldr: '37.0',
  http_parser: '2.9.3',
  icu: '67.1',
  llhttp: '2.0.4',
  modules: '72',
  napi: '6',
  nghttp2: '1.41.0',
  node: '12.18.1',
  openssl: '1.1.1g',
  tz: '2019c',
  unicode: '13.0',
  uv: '1.38.0',
  v8: '7.8.279.23-node.38',
  zlib: '1.2.11'
}

改めて Vue CLI をインストール

npm が更新できたので、改めて Vue CLI をインストールします。

# npm install -g @vue/cli

念のため確認してみます。

% vue --version
@vue/cli 4.4.4

問題ないので、改めて下記を実行します。

% \rm -rf node_modules package-lock.json && npm install

今度はエラーなしで正常に実行できました。
npm run serve も正常に動作するようになりました。

コメント

タイトルとURLをコピーしました