Dalam FF dan semua, javascript saya berfungsi dengan baik. Tetapi di Chrome itu memberikan pesan ini:
Sumber daya diartikan sebagai skrip tetapi ditransfer dengan tipe teks MIME / polos.
Saya telah memeriksa semua tag skrip dan semuanya memiliki MIME type="text/javascript"
. Bahkan dikatakan demikian dengan jquery dan jquery ui. Apa yang salah dengan Chrome?
Apa masalahnya dan perbaikan untuk ini? Apakah ini sesuatu yang harus saya ubah di 'opsi' browser atau dari server, atau apakah saya harus mengubah kode saya?
google-chrome
mime-types
Shaoz
sumber
sumber
Jawaban:
Ini berarti bahwa server mengirimkan respons HTTP Javascript dengan
Anda perlu mengonfigurasi server untuk mengirim respons JavaScript
sumber
content-type:application/javascript
meskipun,application/x-javascript
adalah tidak sebuah RFC atau ECMAScript standar.Ini tidak ada hubungannya dengan jQuery atau kekhasan kode skrip sisi klien. Ini adalah masalah sisi server : Server (aplikasi sisi) tidak mengirimkan nilai
Content-Type
bidang header HTTP yang diharapkan untuk sumber daya skrip sisi klien. Ini terjadi jika server Web tidak cukup dikonfigurasi, salah konfigurasi, atau aplikasi sisi server (misalnya, PHP) menghasilkan sumber daya skrip sisi klien.Jenis media MIME yang tepat untuk implementasi ECMAScript seperti JavaScript meliputi:
text/javascript
(terdaftar sebagai usang , tidak usang; tetapi masih valid , dan didukung terbaik )text/ecmascript
(terdaftar sebagai usang , tidak usang; tetapi masih valid )application/javascript
application/ecmascript
Mereka tidak termasuk
application/x-javascript
, karena jenis media MIME yang tercantum di atas adalah yang terdaftar di pohon standar sekarang (jadi tidak perlu, dan seharusnya tidak ada keinginan, untuk menggunakan yang eksperimental lagi). Lih RFC 4329, "Jenis Media Scripting" (2005 M) dan Uji Kasus saya : Dukungan untuk Jenis Media Scripting .Salah satu solusinya adalah mengkonfigurasi server jika memungkinkan, seperti yang telah direkomendasikan. Untuk Apache, ini bisa sesederhana menambahkan arahan
(lihat dokumentasi Apache HTTP Server untuk detailnya).
Tetapi jika sumber daya skrip sisi klien dihasilkan oleh aplikasi sisi server, seperti PHP, maka perlu untuk mengatur nilai
Content-Type
bidang header secara eksplisit, karena kemungkinan defaulttext/html
:(Pernyataan itu dan yang serupa harus didahulukan sebelum keluaran lain - lihat manual PHP -, kalau tidak badan pesan HTTP dianggap sudah dimulai dan sudah terlambat untuk mengirim lebih banyak bidang tajuk.)
Pembuatan sisi server dapat terjadi dengan mudah pada sumber daya skrip sisi klien bahkan jika Anda memiliki file .js di server, jika komentar dihapus dari mereka ketika disajikan, jika semuanya dikemas dalam satu respons besar (untuk mengurangi sejumlah permintaan, yang dapat lebih efisien), atau diminimalkan oleh aplikasi sisi server dengan cara lain.
sumber
text/javascript
lebihapplication/javascript
. Jika Anda memiliki alasan untuk percaya bahwa ituapplication/javascript
adalah jawaban yang lebih baik sekarang, maka yang paling tidak Anda lakukan adalah menjelaskan diri Anda sendiri dalam komentar. Tidak pantas bahwa ini memerlukan mekanisme pemberitahuan Stack Overflow agar saya mengetahui perubahan Anda. Saya telah mengembalikan perubahan Anda, yang saya sebut fudging , ke jawaban atas pertanyaan ini di mana saya menganggapnya tidak pantas.Untuk server Aplikasi Java seperti Weblogic
1) Pastikan file weblogic.xml Anda bebas dari kesalahan
Seperti yang ini:
2) Tambahkan tipe mime untuk javascript ke file web.xml Anda :
Ini juga akan berfungsi untuk kontainer Java lainnya - Tomcat dll.
application/javascript
Saat ini adalah satu-satunya jenis mime yang valid; yang lain sepertitext/javascript
telah ditinggalkan.3) Anda mungkin perlu membersihkan cache browser Anda atau tekan CTRL-F5
sumber
Saya memiliki masalah ini dan saya menemukan cara untuk memperbaikinya.
Ini terjadi ketika file gaya (CSS) dalam penyandian berbeda dari file PHP yang mereferensikan file .css
Misalnya, menggunakan jQuery.js dalam penyandian Unix dan menggunakan index.php di UTF-8 akan menyebabkan masalah ini sehingga Anda harus membuatnya UTF-8 atau penyandian lainnya asalkan sama.
sumber
Jika Anda membuat javascript dengan file php, tambahkan ini sebagai awal file Anda:
sumber
Di httpd.conf apache Anda, cukup tambahkan baris seperti itu:
sumber
Saya menerima pesan debug ini karena alasan yang lebih konyol daripada jawaban lain di sini: Ini adalah pesan kesalahan yang diterima ketika Anda tidak mendapatkan cukup tidur dan referensi file js dengan menggunakan sintaks untuk file css. Seperti dalam,
daripada
Saya pikir saya meletakkan ini di sini karena ini adalah posting pertama yang muncul ketika mencari pesan kesalahan.
sumber
Masalah aneh, tetapi ini membantu saya untuk menyelesaikan masalah saya. Kadang-kadang bahkan hal yang paling mudah pun sulit untuk dipikirkan ...
Alih-alih menggunakan
/js/main.css
dalam tag-skrip saya, saya menggunakanjs/main.css
Ya , itu benar-benar membuat perbedaan. Saya duduk di WAMP / Windows dan saya tidak punya vhost tetapi hanya digunakan
localhost/<project>
Jika saya referensi
/js/main.css
maka saya referensilocalhost/css/main.css
dan bukanlocalhost/<project>/css/main.css
Ketika Anda memikirkannya, itu cukup jelas tetapi jika seseorang menemukan ini, saya pikir saya akan membagikan jawaban ini.
sumber
Periksa apakah file js Anda benar-benar ada di server. Saya punya masalah ini dan menemukan file js belum diunggah ke server dan server sebenarnya mengembalikan halaman html - yang merupakan dokumen default yang dikonfigurasi di server (misalnya default.html)
sumber
Jika Anda bekerja di Joomla! dan mendapatkan kesalahan yang menjengkelkan ini ketika mencoba memasukkan
.js
file JavaScript ( ), maka solusi berikut adalah untuk Anda.Masalah yang paling mungkin adalah bahwa Anda mencoba untuk memasukkan
.js
file yang tidak ada di sana , atau Anda hanya salah meletakkan.js
file itu, dan ketika Joomla! tidak menemukan sumber daya, maka alih-alih pesan umum 404, ia mengembalikan pesan 404 lengkap dengan halaman web lengkap dan html dll.Browser web menafsirkannya sebagai
.js
padahal itu hanya halaman web yang mengatakan bahwa file yang diperlukan tidak ditemukan .Ini bisa berhasil joomla2.5joomla3.0joomla3.1joomla3.2joomla3.3joomla
sumber
Bagi saya, itu hanya terjadi pada beberapa halaman karena saya menggunakan
window.location
alih-alih$location.url(...);
ini memperbaiki masalah saya. Butuh waktu beberapa saat untuk mencari tahu :)sumber
Saya punya masalah ini saat menggunakan kerangka kerja web dan memperbaikinya dengan memindahkan file javascript yang relevan ke folder javascript yang ditunjuk (oleh kerangka kerja).
sumber
Suatu hal yang umum ketika ini terjadi adalah jika Anda lupa memasukkannya ke
type
dalam panggilan skrip Anda. Anda harus mengaturnya secara eksplisit, karena - menurut W3 - wajib :Masih tampaknya browser memiliki nilai default
plain/text
.Contoh:
Anda juga dapat menetapkan default untuk ekstensi file itu di konfigurasi Apache Anda:
sumber
Jika IIS memastikan bahwa Di bawah Anda,
common HTTP Features
Anda telahStatic Content
dihidupkansumber
Saya memiliki kesalahan yang sama dan akhirnya (dalam kasus khusus saya) saya menemukan masalah di deskriptor penempatan (web.xml)
Masalah:
solusinya:
sumber
Jika Anda menggunakan Spring MVC, Anda dapat menambahkan tag mvn berikut untuk mengecualikan file sumber daya dari Spring Dispatch Servlet
sumber
Dalam kasus saya, server mengirim yang benar
Content-Type
tetapi dengan yang salahContent-Encoding
. Pastikan Anda hanya mengaturContent-Encoding: gzip
sumber daya yang di-gzip. Juga, setelah saya memperbaiki header di server (dalam kasus saya, Google Cloud Storage), saya harus menunggu beberapa menit untuk mencerminkan perubahan karena caching.sumber
Jika Anda menggunakan AdonisJS (REST API, misalnya), salah satu cara untuk menghindari ini adalah dengan menentukan header respons dengan cara ini:
sumber
Saya mengalami masalah yang sama ketika mencoba mengubah gambar latar belakang dalam array melalui javascript (jQuery dalam kasus ini).
Bagaimanapun.
Alih-alih ini:
melakukan hal ini:
Javascript Chrome akan kacau ketika mencoba mem-parsing variabel di dalam elemen yang terstruktur dengan '. Dalam kasus saya itu berhenti tepat sebelum array gambar dimasukkan. Alih-alih mem-parsing url gambar + nama gambar (di dalam array), itu parsing hanya url gambar.
Anda mungkin perlu mencari di dalam kode dan melihat di mana itu terjadi. FF, IE dan lainnya tidak memiliki masalah ini.
sumber
eval
jika Anda dapat membantu: javascripttoolbox.com/bestpractices/#evalJawaban yang diposting di sini oleh simon-sarris membantu saya.
Jangan lupa untuk me-restart sistem Anda setelah perubahan.
sumber