Menghindari kesalahan Net.createConnection di Node
Saya sedang membuat aplikasi dengan React dan Node.js
Di aplikasi ini, saya perlu membuat kueri database di server saya sendiri dengan fungsi berikut, yang terletak di file terpisah bernama "database.js"
const fetchQuery = util.promisify(con.query).bind(con)
// Get all the tracks for a given date from the
const fetchTracks = async (date) => {
const rows = await fetchQuery("SELECT * FROM tracks WHERE playlistDate = '"+date+"'");
}
Ini bekerja dengan sempurna ketika saya menjalankan file dengan Node dari baris perintah. Namun, ketika saya mencoba mengimpornya ke aplikasi react saya dengan
import { fetchTracks, addTracks } from '../scripts/database'
Saya mulai mendapatkan kesalahan dalam file database, khususnya Unhandled Rejection (TypeError): Net.createConnection is not a functionpada panggilan fetchQuery saya.
Dari apa yang saya baca, ini terjadi ketika mencoba memanggil fungsi dari browser, karena itu akan menimbulkan risiko keamanan. Namun, seperti yang saya pahami, semua operasi node dilakukan di sisi server, bukan? Mengapa saya mendapatkan tanda ini ketika database seharusnya dikueri sebelum halaman disajikan? Apa yang saya perlukan untuk mengubah ini?
Jawaban
React berjalan di browser, jadi segera setelah Anda memasukkan database.jsaplikasi React Anda, itu berjalan di browser dengan React lainnya, jadi tentu saja Anda akan mendapatkan errornya. Membuat ini berfungsi memberikan dua opsi:
mengekspos API endpoint dari Node for React untuk memanggil, dan API endpoint memanggil database.js, atau,
selidiki rendering sisi server untuk React, di mana beberapa aplikasi React Anda - khususnya bagian yang lebih statis seperti menu utama Anda - dibuat di sisi Node dan hanya HTML final yang dikirim ke browser. (Ini adalah topik besar dengan sendirinya.)
Dengan contoh Anda yang mengambil parameter tanggal untuk SQL, saya kira # 2 bukanlah pilihan.