質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

258閲覧

herokuプッシュ時にNode.js, npmに関してのエラーが発生する。

Java_student

総合スコア44

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/11/16 13:26

編集2023/11/19 02:25

実現したいこと

Laravelで作成したプロジェクトをHerokuにアップしたいのですが、Node.js及びnpmについてのエラーが発生します。
ログ等の詳細が下記に記載させて頂きます。
簡潔にはpackage.jsonの記述及びnode.jsとnpmのバージョンが古いのが原因の可能性を調べているのですが、ログを見て頂くことは可能でしょうか?

前提

package.jsonには"heroku-postbuild": "npm run prod"を追記しています。

発生している問題・エラーメッセージ

remote: npm ERR! Missing script: "prod" remote: npm ERR! remote: npm ERR! To see a list of scripts, run: remote: npm ERR! npm run remote: remote: npm ERR! A complete log of this run can be found in: /tmp/npmcache.Nnp2B/_logs/2023-11-16T13_12_31_728Z-debug-0.log remote: remote: -----> Build failed remote: remote: We're sorry this build is failing! You can troubleshoot common issues here: remote: https://devcenter.heroku.com/articles/troubleshooting-node-deploys remote: remote: If you're stuck, please submit a ticket so we can help: remote: https://help.heroku.com/ remote: remote: Love, remote: Heroku remote: remote: ! Push rejected, failed to compile Node.js app. remote: remote: ! Push failed remote: ! remote: ! ## Warning - The same version of this code has already been built: b3ce18d4eff328f88f1866bcba42ab1efe677368 remote: ! remote: ! We have detected that you have triggered a build from source code with version b3ce18d4eff328f88f1866bcba42ab1efe677368 remote: ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch. remote: ! remote: ! If you are developing on a branch and deploying via git you must run: remote: ! remote: ! git push heroku <branchname>:main remote: ! remote: ! This article goes into details on the behavior: remote: ! https://devcenter.heroku.com/articles/duplicate-build-version remote: remote: Verifying deploy... remote: remote: ! Push rejected to ****. remote: To https://git.heroku.com/****.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/****.git'

該当のソースコード

package.json

1{ 2 "private": true, 3 "type": "module", 4 "scripts": { 5 "dev": "vite", 6 "build": "vite build", 7 "heroku-postbuild": "npm run prod" 8 }, 9 "devDependencies": { 10 "@popperjs/core": "^2.11.6", 11 "@vitejs/plugin-vue": "^4.0.0", 12 "axios": "^1.1.2", 13 "bootstrap": "^5.2.3", 14 "laravel-vite-plugin": "^0.8.0", 15 "sass": "^1.56.1", 16 "vite": "^4.0.0", 17 "vue": "^3.2.37" 18 } 19}

試したこと

herokuのサポートサイトを確認したところ、node及びnpmのバージョンの差異的なものがnpmがビルドできない理由かなと考えたのですが、他のherokuにプッシュ出来たプロジェクトのバージョンを確認したところ、差異があってもプッシュ出来ていたので、Laravelのバージョンによってherokuへのプッシュの行い方が少々、異なるのかと思ったのですが、どうでしょうか?
ちなみにプッシュが成功したLaravelプロジェクトのバージョンは8でした。

参考サイト

Laravelをherokuにデプロイする方法・手順の解説(MySQL使用)〜コマンドを使わず、Herokuのサイト上で設定するよ!〜

補足情報(FW/ツールのバージョンなど)

PHP8
Laravel10
npm 9.8.1
node v16.20.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

npm run prod コマンドがが未定義なのでエラーになっています。

実際にpackage.jsonには dev build しか定義が無いように見えます。

投稿2023/11/16 14:38

Eggpan

総合スコア2557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Java_student

2023/11/18 05:33

npm installを実行したんですが、変わりませんでした。 package.jsonの定義はnpm installで定義できますか?
Eggpan

2023/11/18 05:38

npm について基礎を学んでください。 devDependenciesなどはinstallコマンドで変更できますが、 scriptは構築時に用意されているか、自分で追加編集を行うものです
Java_student

2023/11/18 08:22 編集

script内に直接、書き込んでいるのですが、それは駄目なのでしょうか? 質問内にある、現在のpackage.jsonの記述も、自身で追記しているのですが。
Eggpan

2023/11/18 08:24

> 自身で追記しているのですが。 と言われましても、現状のpackage.jsonが今どうなっているかこちらからは分かりませんので、問題があるかどうかは判断出来かねます
Java_student

2023/11/18 08:27

すみません。 うまく説明できませんでした。 質問内のpackage.jsonが今のpackage.jsonの状態なのですが、scriptに追記した"heroku-postbuild": "npm run prod"の定義はコマンドで定義する必要があるという事でしょうか?
Eggpan

2023/11/18 08:34

scriptsに "heroku-postbuild": "npm run prod" を定義するということは npm run heroku-postbuild コマンドを定義する、ということになります。コマンドの処理内容は「npm run prod」を実行する、となっています。 しかしながらnpm run prod にあたるコマンド内容はscriptsに定義されていませんので、「 Missing script: "prod"」とエラーになります。 heroku-postbuildやprodコマンド定義する必要があるかないかは、何を実行したいかによるので私からはわかりません。
Java_student

2023/11/19 03:01

>heroku-postbuildやprodコマンド定義する必要があるかないかは、何を実行したいかによるので私からはわかりません。 参考にしたサイトでは「ローカルのpackage.jsonに「heroku-postbuild」を追記して、herokuでビルドできるようにします」と記述されています。 色々と調べてみても、現状のscriptの書き方の問題が分かりません。 下記の記述に誤りはありますか? "scripts": { "dev": "vite", "build": "vite build", "heroku-postbuild": "npm run prod" },
Eggpan

2023/11/19 03:10

誤りがあります。 npm run prod に対応するスクリプトがありませんから、herokuデプロイ時に実行されるnpm run heroku-postbuildはエラーになります。 Laravel10を利用しているのにLaravel6の記事を参考にしているのが問題なのではないでしょうか。 ビルドするコマンドはご存知ではないのですか?いままでローカルでビルドしていないのであればスクリプトの実行は不要ですよ
Java_student

2023/11/19 06:41

デプロイ時のエラーが消えました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。