All Products
Search
Document Center

Application Real-Time Monitoring Service:Unggah source map secara otomatis dengan plugin web dan H5

Last Updated:Aug 18, 2026

Saat melacak error JavaScript (JS) di frontend, jejak stack digunakan untuk mengidentifikasi lokasi error tersebut. Real User Monitoring (RUM) mengumpulkan jejak stack error JS dan menguraikannya menggunakan file source map yang diunggah. Namun, karena RUM mendukung pengelolaan beberapa versi file source map, seringkali sulit mengaitkan secara akurat file JS dalam jejak stack exception dengan file source map-nya hanya berdasarkan nama file saja. Dengan menggunakan plugin build tool RUM, Anda dapat menyisipkan UUID ke dalam file JS terbundel dan file source map untuk membuat tautan dua arah. Hal ini memungkinkan RUM mengurai dan menampilkan jejak stack secara otomatis saat Anda membuka halaman detail exception, tanpa perlu memilih file source map secara manual.

Prasyarat

Sebelum menggunakan plugin, lengkapi persiapan berikut:

  • Anda telah membuat ruang kerja dan aplikasi RUM Web atau H5 di Cloud Monitor 2.0, serta memperoleh workspace dan serviceId. Untuk petunjuknya, lihat Integrasikan aplikasi web atau H5.

  • Lingkungan build Anda menggunakan Node.js 20 LTS atau Node.js 22 ke atas.

  • Anda telah memperoleh ID AccessKey dan Rahasia AccessKey. Akun tersebut harus memiliki izin CMS. Berikut contoh kebijakan izin minimum:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "cms:GetRumSymbolFileParams",
          "Resource": "*"
        }
      ]
    }

Gunakan plugin build tool RUM

Webpack

  1. Instal paket npm plugin build tool RUM untuk Webpack.

    npm install -D @arms/rum-webpack-plugin
  2. Integrasikan dan konfigurasikan plugin Webpack.

    Untuk build produksi, gunakan hidden-source-map agar URL source map tidak terekspos di output JavaScript.

    const { rumWebpackPlugin } = require('@arms/rum-webpack-plugin');
    
    module.exports = {
      mode: 'production',
      devtool: 'hidden-source-map',
      plugins: [
        rumWebpackPlugin({
          workspace: 'your-workspace',
          serviceId: 'your-rum-service-id',
          version: 'your-release-version',
          region: 'cn-hangzhou',
          accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
          accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
          stsToken: process.env.ALIBABA_CLOUD_SECURITY_TOKEN,
          clearSourceMap: true,
        }),
      ],
    };

    Webpack melewatkan pemrosesan dan pengunggahan source map ketika mode === 'development' atau NODE_ENV === 'development'. Gunakan build non-development untuk mengunggah source map produksi.

Vite

  1. Instal paket npm plugin build tool RUM untuk Vite.

    npm install -D @arms/rum-vite-plugin
  2. Integrasikan dan konfigurasikan plugin Vite.

    import { defineConfig } from 'vite';
    import { rumVitePlugin } from '@arms/rum-vite-plugin';
    
    export default defineConfig({
      build: {
        sourcemap: true,
      },
      plugins: [
        rumVitePlugin({
          workspace: 'your-workspace',
          serviceId: 'your-rum-service-id',
          version: 'your-release-version',
          region: 'cn-hangzhou',
          accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
          accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
          stsToken: process.env.ALIBABA_CLOUD_SECURITY_TOKEN,
          clearSourceMap: true,
        }),
      ],
    });

    build.sourcemap dapat diatur ke true atau 'hidden'. Jangan atur ke 'inline'.

Referensi konfigurasi

Bidang

Wajib untuk unggah otomatis

Bawaan

Deskripsi

workspace

Ya

Tidak ada

Nama ruang kerja Cloud Monitor 2.0.

serviceId

Ya

Tidak ada

ID Layanan aplikasi RUM.

version

Ya

Tidak ada bawaan

Versi rilis aplikasi, digunakan untuk mengisolasi source map dari berbagai build. Gunakan versi rilis atau nomor build aktual Anda.

region

Ya

Tidak ada bawaan

Wilayah layanan RUM.

accessKeyId

Ya

Tidak ada

ID AccessKey untuk memanggil OpenAPI kebijakan unggah.

accessKeySecret

Ya

Tidak ada

Rahasia AccessKey untuk memanggil OpenAPI kebijakan unggah.

stsToken

Tidak

Tidak ada

Token Security Token Service (STS) yang diteruskan saat menggunakan kredensial temporary STS.

clearSourceMap

Tidak

false

Menghapus file lokal .map setelah unggah berhasil, mencegah source map ikut dipublikasikan bersama aset statis Anda.

Verifikasi penyisipan

Periksa file source map

Jika clearSourceMap: false, buka file .map di direktori output build. Kehadiran debugId yang diformat dengan benar di tingkat atas menandakan bahwa penyisipan berhasil. Contoh:

{
  "version": 3,
  "file": "index.js",
  "sources": ["webpack://app/src/index.ts"],
  "sourcesContent": ["throw new Error('test');"],
  "mappings": "AAAA",
  "debugId": "e4f083d6-b8d8-4cae-a0ea-16f2e83a6be1"
}

sourcesContent harus ada dan tidak kosong. Jika tidak ada atau kosong, RUM mungkin hanya dapat memulihkan lokasi file dan tidak bisa menampilkan konteks kode sumber.

Periksa waktu proses browser

Buka halaman yang telah dideploy dan jalankan perintah berikut di konsol browser:

window._armsRumDebugIds;

Jika objek yang dikembalikan berisi pemetaan UUID, berarti file JavaScript pada halaman saat ini telah mendaftarkan debugId. Plugin juga mendaftarkan debugId di globalThis, self, global, document.defaultView, serta window induk/atas yang dapat diakses, untuk mendukung skenario iframe dan micro-frontend.

Periksa hasil unggah

Di halaman File Management aplikasi RUM Anda, pastikan bahwa:

  • File source map telah muncul.

  • Versi file sesuai dengan version yang dikonfigurasi di plugin.

  • UUID sesuai dengan debugId di output build.

Pertanyaan Umum

Log build melaporkan bahwa file source map tidak ditemukan

Periksa apakah build tool Anda menghasilkan file .map terpisah. Jangan gunakan source map inline atau eval, dan pastikan nama file serta path file JavaScript dan file .map tidak diubah oleh skrip post-processing.

Unggah berhasil tetapi halaman detail exception tidak menampilkan kode sumber

Periksa secara berurutan:

  1. Apakah file .map berisi sourcesContent yang tidak kosong?

  2. Apakah debugId dalam source map sesuai dengan UUID yang dilaporkan dalam jejak stack exception?

  3. Apakah workspace, serviceId, version, dan region sesuai dengan aplikasi RUM target Anda?

  4. Apakah file yang diunggah muncul di halaman File Management aplikasi target?

Webpack tidak mengunggah file

Pastikan bahwa baik mode maupun NODE_ENV tidak diatur ke development, dan verifikasi bahwa file source map eksternal sedang dihasilkan.

Bisakah saya menggunakan bucket OSS kustom?

Tidak. Titik akhir unggah dan parameter form dikembalikan oleh OpenAPI. Plugin tidak mengekspos konfigurasi bucket.

Bagaimana cara mencegah source map dipublikasikan ke internet publik?

Untuk Webpack, gunakan hidden-source-map. Atur juga clearSourceMap: true. Plugin akan menghapus file lokal .map yang sesuai setelah setiap unggah berhasil.

Saya melihat error bahwa versi Node.js saat ini tidak mendukung fitur tertentu

Upgrade lingkungan build Anda ke Node.js 20 LTS atau Node.js 22 ke atas. Dependensi yang digunakan oleh plugin Vite tidak mendukung Node.js 18 atau 21.

Ukuran file source map melebihi batas

Satu file source map tidak boleh melebihi 50 MiB. Anda dapat mengurangi ukuran file melalui code splitting, mengurangi konten source inline, atau menyesuaikan konfigurasi build Anda. Pastikan Anda tetap menyimpan cukup sourcesContent untuk menampilkan konteks kode sumber.

Pencocokan otomatis source map gagal ketika URL chunk berisi tanda kurung

Ketika URL chunk webpack berisi karakter khusus seperti tanda kurung — misalnya format route group yang digunakan oleh Next.js App Router (/app/(groupName)/page/) — ARMS tidak dapat mengurai UUID dengan benar dari bidang binary_images dalam error JS yang dilaporkan. Akibatnya, pencocokan otomatis source map gagal. URL chunk tanpa tanda kurung dalam exception yang sama diurai secara normal.

Ini merupakan keterbatasan penguraian ARMS yang sudah diketahui. Untuk menghindari masalah ini, konfigurasikan webpack agar tidak menyertakan tanda kurung dalam penamaan path chunk. Misalnya, ubah nama direktori route group Next.js agar tidak menggunakan format (groupName).

Catatan rilis

Kami merekomendasikan pengguna baru atau pengguna yang melakukan upgrade untuk menggunakan versi terbaru 1.1.0. Versi 0.0.x menggunakan pipeline unggah lama dan tidak lagi direkomendasikan.

Versi

Status

Deskripsi

1.1.0

Saat ini direkomendasikan

Memerlukan pengiriman eksplisit objek konfigurasi plugin. workspace, serviceId, version, region, accessKeyId, dan accessKeySecret semuanya merupakan bidang wajib.

1.0.0

Direkomendasikan untuk upgrade

Beralih ke pipeline unggah CMS menggunakan API GetRumSymbolFileParams. Menambahkan dukungan workspace, serviceId, dan autentikasi OpenAPI. Menambahkan dukungan STS. Secara internal memperbaiki tipe unggah menjadi sourceMap.

0.0.22

Tidak direkomendasikan

Menggunakan pipeline unggah lama. Memperluas cakupan pendaftaran debugId ke iframe, micro-frontend, dan berbagai objek global.

0.0.21

Tidak direkomendasikan

Menggunakan pipeline unggah lama. Menambahkan dukungan pemilihan wilayah dan token STS.

0.0.8

Tidak direkomendasikan

Menggunakan pipeline unggah lama. Menambahkan unggah otomatis source map setelah build proyek.

0.0.5

Tidak direkomendasikan

Menggunakan pipeline unggah lama. Menambahkan dukungan Webpack dan Vite. Menyisipkan UUID untuk membuat tautan dua arah antara file JavaScript dan file source map-nya.

Saat melakukan upgrade dari 0.0.x ke 1.1.0:

  • Anda harus mengirimkan objek konfigurasi secara eksplisit ke plugin Webpack atau Vite dan mengonfigurasi semua bidang wajib.

  • Jika konfigurasi Anda sebelumnya menggunakan pid, gantilah dengan serviceId.

  • Konfigurasikan secara eksplisit version dan region. Plugin tidak lagi menyediakan nilai bawaan.

  • Setelah upgrade dari 0.0.x, pipeline unggah OpenAPI CMS akan digunakan. Konfigurasikan workspace, serviceId, dan autentikasi AccessKey seperti yang dijelaskan dalam dokumen ini.