このサイトにはプロモーションが含まれます

【Laravelプロジェクト】DeployerでのデプロイでBuildエラー

概要

Deployerを使ってクラウドサーバーへのデプロイを行うとBuildエラーが発生した。

ローカルでのビルドは問題なく通るのですが、クラウドサーバーへ上げる際に死ぬ。

初めて出会ったエラーのため解消に時間がかかったので、助かる人が増えることを願って記事に残します。

エラー内容

npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@rollup%2frollup-linux-x64-musl--save-optional - Not found
npm ERR! 404 
npm ERR! 404  '@rollup/rollup-linux-x64-musl--save-optional@*' is not in this registry.
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! A complete log of this run can be found in: /Users/oshidamarina/.npm/_logs/2024-08-13T03_48_16_120Z-debug-0.log

環境

  • Laravel 10
  • Vue3
  • TypeScript5
  • Tailwind
  • DaisyUi
  • Macbook Air(開発機)
  • AmazonLinux2023(本番サーバー)

Let`s GO

やんやん

プログラマーとしてLEMP環境に主に生息しており、DevOps 的な立ち回りをしながらご飯を食べている当ブログの管理人のやんやんと申します。
最近はTmux使うのを辞めました。

 

原因

Viteのビルド中に発生する `@rollup/rollup-linux-x64-musl` モジュールが見つからない問題に対処しています。この問題は、ViteがRollupのネイティブバイナリに依存しているため、特定の環境(特にDockerコンテナやLinux環境)で発生することがあるとのこと。

https://github.com/vitejs/vite/discussions/15532

解決方法

rollupのインストール

npm install @rollup/rollup-linux-x64-musl --save-optional

package.json に下記の記載があること。

"optionalDependencies": {
      "@rollup/rollup-linux-x64-musl": "^4.20.0"
 }

deployerのBuildタスクの修正

task('deploy', [
    'deploy:prepare',
    'deploy:vendors',
    'deploy:shared',
    'deploy:writable',
    'build',
    'artisan:migrate',
    'deploy:publish',
]);

// Build task: run npm install and npm run build
desc('Build the project');
task('build', function () {
    run('cd {{release_path}} && npm install && npm run build');
});

 

番外編

DeployerのBuildタスクを以下のように調整してみると僕の環境では通りました。

task('deploy', [
    'deploy:prepare',
    'deploy:vendors',
    'deploy:shared',
    'deploy:writable',
    'build',
    'artisan:migrate',
    'deploy:publish', 
]);

// Build task: run npm install and npm run build
desc('Build the project');
task('build', function () {
    run('cd {{release_path}} && rm -rf node_modules package-lock.json'); // FIXME: 原因は他にある
    run('cd {{release_path}} && npm install && npm run build');
});

ただし、この方法ではBuildは成功するが、ブラウザ表示に難がでてくるという記事もあったため、取りやめ。

多くの人が解決しているであろう rollup の修正で対応することにしましたー。

おわり

Buildが通ったー!ってことで終わりです。
Viteのバージョンを調整したりしたら意外とすんなり解決したりするのかなーとおもったり…

お困りの方も試してみてください。

 

Twitterでフォローしよう

読んでみーな
おすすめの記事