Jadi, saya menulis aplikasi dengan node / express + jade combo.
Saya punya client.js
, yang dimuat pada klien. Dalam file itu saya memiliki kode yang memanggil fungsi dari file JavaScript lainnya. Upaya saya adalah menggunakan
var m = require('./messages');
untuk memuat konten messages.js
(seperti yang saya lakukan di sisi server) dan kemudian pada fungsi panggilan dari file itu. Namun, require
tidak didefinisikan di sisi klien, dan itu melempar kesalahan formulir Uncaught ReferenceError: require is not defined
.
File-file JS lainnya juga dimuat saat runtime di klien karena saya menempatkan tautan di header halaman web. Jadi klien mengetahui semua fungsi yang diekspor dari file-file lain ini.
Bagaimana cara saya memanggil fungsi-fungsi ini dari file JS lainnya (seperti messages.js
) di client.js
file utama yang membuka soket ke server?
<script src="messages.js"></script>
menelepon mereka setelah itu?--require
opsi peramban menyebabkanrequire()
ditentukan pada sisi klien. Lihat: lincolnloop.com/blog/speedy-browserifying-multiple-bundlesJawaban:
Ini karena
require()
tidak ada di browser / sisi klien JavaScript.Sekarang Anda harus membuat beberapa pilihan tentang manajemen skrip JavaScript sisi klien Anda.
Anda memiliki tiga opsi:
<script>
tag.Implementasi sisi klien CommonJS meliputi:
(kebanyakan dari mereka memerlukan langkah pembangunan sebelum Anda menyebarkan)
Anda dapat membaca lebih lanjut tentang perbandingan Komponen Browserify vs (usang) saya .
Implementasi AMD meliputi:
Catatan, dalam pencarian Anda untuk memilih yang mana untuk pergi, Anda akan membaca tentang Bower . Bower hanya untuk dependensi paket dan tidak terbuka tentang definisi modul seperti CommonJS dan AMD.
Semoga ini bisa membantu.
sumber
<script>
tag untuk mengimpor kelas Bereaksi tanpa menggunakan manajer paket nodeJs?Saya berasal dari lingkungan elektron, di mana saya membutuhkan komunikasi IPC antara proses renderer dan proses utama. Proses renderer duduk di file HTML antara tag skrip dan menghasilkan kesalahan yang sama. Garis
melempar UnEught ReferenceError: memerlukan tidak didefinisikan
Saya dapat mengatasinya dengan menetapkan integrasi simpul sebagai benar ketika jendela browser (tempat file HTML ini disematkan) pada awalnya dibuat dalam proses utama.
Itu memecahkan masalah bagi saya. Solusinya diusulkan di sini . Semoga ini bisa membantu orang lain. Bersulang.
sumber
ES6: Dalam html sertakan file js utama menggunakan atribut
type="module"
( dukungan browser ):Dan dalam
script.js
file termasuk file lain seperti itu:Di dalam file yang disertakan (
module.js
) Anda harus mengekspor fungsi / kelas yang akan Anda imporContoh kerja di sini .
sumber
val
objek jendelawindow.val = val
. Inilah plunker: Plunker: plnkr.co/edit/aDyjyMxO1PdNaFh7ctBT?p=preview - solusi ini berfungsiDalam kasus saya, saya menggunakan solusi lain.
Karena proyek tidak memerlukan CommonJs dan itu harus memiliki kompatibilitas ES3 (modul tidak didukung) yang Anda butuhkan hanyalah menghapus semua pernyataan ekspor dan impor dari kode Anda , karena tsconfig Anda tidak mengandung
Tetapi gunakan pernyataan impor dan ekspor dalam file referensi Anda
Kode akhir yang dihasilkan akan selalu memiliki (setidaknya untuk naskah skrip 3.0)
sumber
Meskipun menggunakan ini tidak akan berfungsi, saya pikir solusi terbaik adalah browserify:
sumber
Ini Berhasil Bagi Saya
<script data-main="your-Scrpt.js" src="require.js"></script>
Catatan ini !
gunakan: -> memerlukan (['moudle-name']) di "your-script.js"
tidak memerlukan ('nama moudle')const {ipcRenderer} = membutuhkan (['elektron'])
Tidak: const {ipcRenderer} = butuhkan ('elektron')
sumber