

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memecahkan masalah aplikasi yang dirender sisi server
<a name="troubleshooting-SSR"></a>

Jika Anda mengalami masalah tak terduga saat menerapkan aplikasi SSR dengan komputasi Amplify Hosting, tinjau topik pemecahan masalah berikut. Jika Anda tidak melihat solusi untuk masalah Anda di sini, lihat panduan [pemecahan masalah komputasi web SSR di repositori Amplify Hosting](https://github.com/aws-amplify/amplify-hosting/blob/main/FAQ.md#ssr-web-compute) Issues. GitHub

**Topics**
+ [Saya butuh bantuan menggunakan adaptor kerangka kerja](#ssr-framework-adapter)
+ [Rute Edge API menyebabkan build Next.js saya gagal](#nextjs-edge-API-route-not-supported)
+ [Regenerasi Statis Incremental On-Demand tidak berfungsi untuk aplikasi saya](#on-demand-isr-not-supported)
+ [Output build aplikasi saya melebihi ukuran maksimum yang diizinkan](#build-output-too-large)
+ [Build saya gagal dengan kesalahan kehabisan memori](#out-of-memory)
+ [Ukuran respons HTTP aplikasi saya terlalu besar](#http-response-size-too-large)
+ [Bagaimana cara mengukur waktu mulai aplikasi komputasi saya secara lokal?](#out-of-memory)
+ [Build saya gagal dengan kesalahan versi Node.js yang tidak digunakan lagi](#nodejs-version)

## Saya butuh bantuan menggunakan adaptor kerangka kerja
<a name="ssr-framework-adapter"></a>

Jika Anda mengalami masalah saat menerapkan aplikasi SSR yang menggunakan adaptor kerangka kerja, lihat. [Menggunakan adaptor open source untuk kerangka SSR apa pun](using-framework-adapter.md)

## Rute Edge API menyebabkan build Next.js saya gagal
<a name="nextjs-edge-API-route-not-supported"></a>

Saat ini, Amplify tidak mendukung Next.js Edge API Routes. Anda harus menggunakan non-edge APIs dan middleware saat menghosting aplikasi Anda dengan Amplify.

## Regenerasi Statis Incremental On-Demand tidak berfungsi untuk aplikasi saya
<a name="on-demand-isr-not-supported"></a>

Dimulai dengan versi 12.2.0, Next.js mendukung Incremental Static Regeneration (ISR) untuk membersihkan cache Next.js secara manual untuk halaman tertentu. Namun, Amplify saat ini tidak mendukung ISR On-Demand. Jika aplikasi Anda menggunakan validasi ulang sesuai permintaan Next.js, fitur ini tidak akan berfungsi saat Anda menerapkan aplikasi ke Amplify.

## Output build aplikasi saya melebihi ukuran maksimum yang diizinkan
<a name="build-output-too-large"></a>

Saat ini, ukuran output build maksimum yang didukung Amplify untuk aplikasi SSR adalah 220 MB. Jika Anda mendapatkan pesan kesalahan yang menyatakan bahwa ukuran keluaran build aplikasi melebihi ukuran maksimum yang diizinkan, Anda harus mengambil langkah-langkah untuk menguranginya.

Untuk mengurangi ukuran keluaran build aplikasi, Anda dapat memeriksa artefak build aplikasi dan mengidentifikasi dependensi besar untuk diperbarui atau dihapus. Pertama, unduh artefak build ke komputer lokal Anda. Kemudian, periksa ukuran direktori. Misalnya, `node_modules` direktori mungkin berisi binari seperti `@swc` dan `@esbuild` yang direferensikan oleh file runtime server Next.js. Karena binari ini tidak diperlukan dalam runtime, Anda dapat menghapusnya *setelah build*.

Gunakan petunjuk berikut untuk mengunduh keluaran build aplikasi dan memeriksa ukuran direktori menggunakan ( AWS Command Line Interface CLI).

**Untuk mengunduh dan memeriksa keluaran build untuk aplikasi Next.js**

1. Buka jendela terminal dan jalankan perintah berikut. Ubah id aplikasi, nama cabang, dan id pekerjaan menjadi informasi Anda sendiri. Untuk id pekerjaan, gunakan nomor build untuk build gagal yang sedang Anda selidiki.

   ```
   aws amplify get-job --app-id {{abcd1234}} --branch-name {{main}} --job-id {{2}}
   ```

1. Dalam output terminal, cari URL artefak yang telah ditetapkan sebelumnya di bagian`job`,`steps`,`stepName: "BUILD"`. URL disorot dengan warna merah dalam contoh output berikut.

   ```
   "job": {
       "summary": {
           "jobArn": "arn:aws:amplify:us-west-2:111122223333:apps/abcd1234/main/jobs/0000000002",
           "jobId": "2",
           "commitId": "HEAD",
           "commitTime": "2024-02-08T21:54:42.398000+00:00",
           "startTime": "2024-02-08T21:54:42.674000+00:00",
           "status": "SUCCEED",
           "endTime": "2024-02-08T22:03:58.071000+00:00"
       },
       "steps": [
           {
               "stepName": "BUILD",
               "startTime": "2024-02-08T21:54:42.693000+00:00",
               "status": "SUCCEED",
               "endTime": "2024-02-08T22:03:30.897000+00:00",
               "logUrl": {{"https://aws-amplify-prod-us-west-2-artifacts.s3.us-west-2.amazonaws.com/abcd1234/main/0000000002/BUILD/log.txt?X-Amz-Security-Token=IQoJb3JpZ2luX2V...Example}}
   ```

1. Salin dan tempel URL ke jendela browser. `artifacts.zip`File diunduh ke komputer lokal Anda. Ini adalah output build Anda.

1. Jalankan perintah penggunaan `du` disk untuk memeriksa ukuran direktori. Contoh perintah berikut mengembalikan ukuran `compute` dan `static` direktori.

   ```
   du -csh compute static
   ```

   Berikut ini adalah contoh output dengan informasi ukuran untuk `static` direktori `compute` dan.

   ```
    29M    compute
   3.8M    static
    33M    total
   ```

1. Buka `compute` direktori, dan cari `node_modules` foldernya. Tinjau dependensi Anda untuk file yang dapat Anda perbarui atau hapus untuk mengurangi ukuran folder.

1. Jika aplikasi Anda menyertakan binari yang tidak diperlukan dalam runtime, hapus binari setelah build dengan menambahkan perintah berikut ke bagian build file aplikasi Anda. `amplify.yml`

   ```
   - rm -f node_modules/@swc/core-linux-x64-gnu/swc.linux-x64-gnu.node
   - rm -f node_modules/@swc/core-linux-x64-musl/swc.linux-x64-musl.node
   ```

   Berikut ini adalah contoh bagian perintah build dari `amplify.yml` file dengan perintah ini ditambahkan *setelah* menjalankan build produksi.

   ```
   frontend:
     phases:
       build:
         commands:
            -npm run build
            
            // After running a production build, delete the files
            - rm -f node_modules/@swc/core-linux-x64-gnu/swc.linux-x64-gnu.node
            - rm -f node_modules/@swc/core-linux-x64-musl/swc.linux-x64-musl.node
   ```

## Build saya gagal dengan kesalahan kehabisan memori
<a name="out-of-memory"></a>

Next.js memungkinkan Anda untuk menyimpan artefak build cache untuk meningkatkan kinerja pada build berikutnya. Selain itu, AWS CodeBuild container Amplify mengompres dan mengunggah cache ini ke Amazon S3, atas nama Anda, untuk meningkatkan performa build berikutnya. Ini dapat menyebabkan build Anda gagal dengan kesalahan kehabisan memori.

Lakukan tindakan berikut untuk mencegah aplikasi Anda melebihi batas memori selama fase build. Pertama, hapus `.next/cache/**/*` dari bagian cache.paths dari pengaturan build Anda. Selanjutnya, hapus variabel `NODE_OPTIONS` lingkungan dari file pengaturan build Anda. Sebagai gantinya, atur variabel `NODE_OPTIONS` lingkungan di konsol Amplify untuk menentukan batas memori maksimum Node. Untuk informasi selengkapnya tentang menyetel variabel lingkungan menggunakan konsol Amplify, lihat. [Mengatur variabel lingkungan](setting-env-vars.md)

Setelah melakukan perubahan ini, coba build Anda lagi. Jika berhasil, tambahkan `.next/cache/**/*` kembali ke bagian cache.paths dari file pengaturan build Anda.

Untuk informasi selengkapnya tentang konfigurasi cache Next.js guna meningkatkan performa build, lihat [AWS CodeBuild](https://nextjs.org/docs/app/guides/ci-build-caching#aws-codebuild) di situs web Next.js.

## Ukuran respons HTTP aplikasi saya terlalu besar
<a name="http-response-size-too-large"></a>

Saat ini, ukuran respons maksimum yang didukung Amplify untuk Next.js 12 dan aplikasi yang lebih baru menggunakan platform Web Compute adalah 5,72 MB. Tanggapan atas batas itu mengembalikan 504 kesalahan tanpa konten ke klien.

## Bagaimana cara mengukur waktu mulai aplikasi komputasi saya secara lokal?
<a name="out-of-memory"></a>

Gunakan petunjuk berikut untuk menentukan waktu aktif lokal initialization/start untuk Next.js 12 atau aplikasi Compute yang lebih baru. Anda dapat membandingkan kinerja aplikasi secara lokal vs. di Amplify Hosting dan menggunakan hasilnya untuk meningkatkan kinerja aplikasi Anda.

**Untuk mengukur waktu inisialisasi aplikasi Next.js Compute secara lokal**

1. Buka `next.config.js` file aplikasi dan atur `output` opsi menjadi `standalone` sebagai berikut.

   ```
   ** @type {import('next').NextConfig} */
   const nextConfig = {
     // Other options
     output: "standalone",
   };
   
   module.exports = nextConfig;
   ```

1. Buka jendela terminal dan jalankan perintah berikut untuk membangun aplikasi.

   ```
   next build
   ```

1. Jalankan perintah berikut untuk menyalin `.next/static` folder ke`.next/standalone/.next/static`.

   ```
   cp -r .next/static .next/standalone/.next/static
   ```

1. Jalankan perintah berikut untuk menyalin `public` folder ke`.next/standalone/public`.

   ```
   cp -r public .next/standalone/public
   ```

1. Jalankan perintah berikut untuk memulai server Next.js.

   ```
   node .next/standalone/server.js
   ```

1. Perhatikan berapa lama waktu yang dibutuhkan antara menjalankan perintah di langkah 5 dan server mulai. Ketika server mendengarkan pada port, itu harus mencetak pesan berikut.

   ```
   Listening on port 3000
   ```

1. Perhatikan berapa lama waktu yang dibutuhkan modul lain untuk memuat setelah dimulainya server pada langkah 6. Misalnya, perpustakaan seperti `bugsnag` membutuhkan waktu 10-12 detik untuk memuat. Setelah dimuat, itu akan menampilkan pesan konfirmasi`[bugsnag] loaded`.

1. Tambahkan durasi waktu dari langkah 6 dan langkah 7 bersama-sama. Hasil ini adalah waktu aktif lokal initialization/start aplikasi Compute Anda.

## Build saya gagal dengan kesalahan versi Node.js yang tidak digunakan lagi
<a name="nodejs-version"></a>

Masalah: Pembuatan aplikasi SSR Anda gagal dengan kesalahan versi Node.js tidak didukung.

```
❌ NODE.JS VERSION NOT SUPPORTED
================================================================================
Your application uses Node.js v18.x.x, which is no longer supported.
AWS Amplify Console has ended support for Node.js 14, Node.js 16 and Node.js 18.

To deploy your application, please upgrade to Node.js 20 or later.

For detailed migration guidelines, visit: https://docs.aws.amazon.com/amplify/latest/userguide/troubleshooting-general.html#update-node-version
================================================================================
```

Penyebab: Aplikasi SSR Anda dibuat menggunakan versi Node.js yang tidak digunakan lagi (14.x, 16.x, atau 18.x). Efektif 15 September 2025, Amplify memblokir penerapan aplikasi SSR yang menggunakan versi usang ini selama proses pembuatan.

Perbarui lingkungan build Anda untuk menggunakan Node.js 20 atau yang lebih baru. Untuk petunjuk mendetail, lihat [Saya perlu memperbarui versi Node.js aplikasi saya](troubleshooting-general.md#update-node-version). 