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 も正常に動作するようになりました。
コメント