Apabila menggunakan uniapp untuk membangunkan aplikasi, ia sering berlaku bahawa pratonton penyemak imbas mudah alih tidak dapat mengakses antara muka Ini disebabkan oleh beberapa ciri uniapp itu sendiri. Artikel ini akan membincangkan sebab, penyelesaian, dsb.
Apabila menggunakan uniapp untuk membangunkan aplikasi, kami biasanya pratonton projek dalam masa nyata melalui editor HBuilderX, supaya kami boleh melihat kesan antara muka dan nyahpepijat kod dengan mudah. Walau bagaimanapun, selepas menggunakan aplikasi ke pelayan, apabila mengakses aplikasi dalam penyemak imbas mudah alih, anda akan mendapati halaman itu boleh dipaparkan seperti biasa, tetapi 404 atau mesej ralat lain dikembalikan apabila mengakses antara muka.
Semasa proses pembangunan Uni-app, anda boleh menggunakan kaedah uni.request()
untuk membuat permintaan antara muka Kaedah ini akan menambah https://unidemo.dcloud.net.cn
secara automatik sebagai domain yang diminta nama secara lalai, dan kami secara setempat Semasa pratonton, gunakan localhost
atau 127.0.0.1
. Pada masa ini, jika anda mengakses antara muka dalam penyemak imbas mudah alih, nama domain yang diminta oleh antara muka adalah berbeza daripada nama domain aplikasi sebenar, menyebabkan permintaan antara muka gagal.
Konfigurasikan permintaan merentas domain pada pelayan untuk membenarkan akses kepada antara muka di bawah nama domain termasuk localhost
atau 127.0.0.1
. Dalam pelayan Nginx, kita boleh mencapainya melalui konfigurasi berikut:
location / { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, HEAD'; add_header Access-Control-Allow-Headers 'Authorization, X-Requested-With, Content-Type, Accept'; proxy_pass http://your_domain:your_port; }
Dalam kaedah request
uniapp, anda boleh menambah Pilihan baseURL
, digunakan untuk menetapkan nama domain yang diminta. Kami boleh menetapkan baseURL
secara dinamik dengan menilai persekitaran berjalan untuk menyelesaikan masalah tidak dapat mengakses antara muka semasa pratonton.
let baseURL = ''; if(process.env.NODE_ENV === 'development'){ baseURL = 'http://localhost:3000'; }else{ baseURL = 'http://your_domain:your_port'; } uni.request({ url: '/api', method: 'POST', baseURL: baseURL, //... })
Apabila membangun menggunakan uniapp, perbezaan antara nama domain yang diminta semasa pratonton dan nama domain yang digunakan sebenar mungkin menyebabkan permintaan antara muka gagal. Masalah ini boleh diselesaikan dengan mengkonfigurasi merentas domain atau menetapkan nama domain yang diminta secara dinamik.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa pratonton penyemak imbas mudah alih uniapp tidak dapat mengakses antara muka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!