Vue プロジェクトの Heroku デプロイメントに失敗する: sh: 1: vue-cli-service: 見つからない
プロット紹介
私は最近、Heroku にデプロイする予定の Express + Vue のフロントエンドとバックエンドのプロジェクトのデモを書きました。
ディレクトリ構造の一部は以下の通りです。
server.js // Express provides the data interface
package.json
client/ // Vue front-end display data
package.json
プロジェクト全体をGithubに保存し、Herokuが自動的にデプロイするようにします。
フロントエンドのプロジェクトはローカルでパッケージ化できません。そうしないと、distディレクトリがgitに移動してしまい、よくありません
そのため、デプロイ時には、オンラインでパッケージングを行う必要があります
package.jsonは以下のような感じです。
"scripts": {
"postinstall": "npm run client-install && npm run client-build",
"client": "npm start --prefix client",
"client-build": "npm run build --prefix client",
"client-install": "npm install --prefix client",
"start": "node server.js",
"server": "nodemon server.js --ignore client",
"dev": "concurrently \"npm run server\" \"npm run client\""
},
client/package.json
"scripts": {
"serve": "vue-cli-service-serve",
"build": "vue-cli-service build",
"start": "npm run serve"
},
Herokuが自動的に実行されます。
postinstall -> start
そこで、ポストインストールでクライアントフロントエンドプロジェクトの[依存関係のインストール]と[プロジェクトのパッケージング]を行いました。
上記の2つの設定ファイルをローカルで実行すると、問題なし
Herokuオンラインデプロイメント
Herokuのオンラインデプロイメントにアクセスすると、エラーが報告されます。
sh: 1: vue-cli-service: not found
スクリーンショット
オンライン記事では、一般的に、3つの解決策が書かれています。
1. 再インストール
フォルダの置き換え
node_modules
フォルダの削除
npm install
を再インストールしてください。
2. パスを指定する
. /node_modules/.bin/vue-cli-service build
3. グローバルインストール
npm install @vue/cli-service -g
オフライン環境は本当に問題ないのですが、Herokuのオンラインデプロイメントがダメなんです
問題解決
Baiduでいろいろ調べた結果、似たような記事で環境変数に言及しているものがありました。
NODE_ENV=production
デプロイログを確認すると、確かに同様の設定があり、Herokuが親切にも環境変数を設定してくれていました
環境変数の変更
{
"postinstall": "NODE_ENV=development && npm run client-install && npm run client-build && NODE_ENV= production"
}
ようやくデプロイが成功しました
最終的なpackage.jsonファイル
"scripts": {
"postinstall": "NODE_ENV=development && npm run client-install && npm run client-build && NODE_ENV= production",
"client": "npm start --prefix client",
"client-build": "npm run build --prefix client",
"client-install": "npm install --prefix client",
"start": "node server.js",
"server": "nodemon server.js --ignore client",
"dev": "concurrently \"npm run server\" \"npm run client\""
}
デプロイ後のアドレス
https://web-node-app.herokuapp.com/
参考
linux で jenkins のフロントエンドを自動ビルドすると、sh: vue-cli-service: command not found とプロンプトが出続ける。
関連
-
Build Record 2-CSS file not loaded-Solved-Resource interpreted as Stylesheet but transferred with MIME type text/plain
-
undefinedエラーが発生しました:getaddrinfo ENOTFOUND; GETできません。
-
listen tcp :8080: bind: 各ソケットアドレス(プロトコル/ネットワークアドレス/ポート)を1つだけ使用することはできません。
-
OSError: [Errno 98] アドレスはすでに使用中です。
-
(2019.8.16に解決) urllib.error.URLError: urlopen エラー [Errno 11001] getaddrinfo に失敗しました。
-
Error:SSL peer shut down incorrectlyの完全な解決法
-
TensorFlowのエラー ValueError: xとyは同じサイズでなければならない
-
Eclipseオンラインインストールエラー インストールするアイテムの収集中にエラーが発生しました。
-
javaHow to create array whose elements are type ArrayList?
-
Assert.assertNotNull() で null 判定 Assertion
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
CUDAドライバのバージョンがCUDAランタイムのバージョンに対して不足しています。
-
pipの実行エラーです。ランチャーで致命的なエラーが発生しました。Unable to create process using '"'
-
画像ダウンロードの問題
-
Eigen::Block... ...削除された関数を参照しようとしています Solution
-
tensorflow.contrib'という名前のモジュールはありません。
-
python encountered a problem: No handlers could be found for logger *.
-
Pygameでタイマーを使う
-
Echartsがエラーを発生させる: echarts Uncaught ReferenceError: echarts is not defined
-
error: 'atoi' is not declared in this scope
-
C#のAssyInfo.csファイル 詳細説明