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

B!

概要

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(本番サーバー)

原因

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のバージョンを調整したりしたら意外とすんなり解決したりするのかなーとおもったり…

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

 

最新の記事はこちらから