概要
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のバージョンを調整したりしたら意外とすんなり解決したりするのかなーとおもったり…
お困りの方も試してみてください。