React Node.js MySQL Uncaught ReferenceError: proses tidak ditentukan
P粉471207302
2023-08-29 22:19:27
<p>Saya cuba melaksanakan halaman carian dalam tapak web saya. Pengguna seharusnya boleh memasukkan kata kunci dan tapak web harus mengembalikan baris daripada jadual produk yang mengandungi kata kunci tersebut daripada pangkalan data. </p>
<p>Saya mendapat ralat ini apabila saya cuba mewujudkan sambungan ke pangkalan data</p>
<pre class="brush:php;toolbar:false;">_stream_writable.js:57 Ralat Rujukan Tidak Ditangkap: proses tidak ditakrifkan
di ./node_modules/mysql/node_modules/readable-stream/lib/_stream_writable.js (_stream_writable.js:57:1)
di options.factory (react refresh:6:1)
di __webpack_require__ (bootstrap:24:1)
di fn (penggantian modul panas:62:1)
di ./node_modules/mysql/node_modules/readable-stream/readable-browser.js (readable-browser.js:4:1)
di options.factory (react refresh:6:1)
di __webpack_require__ (bootstrap:24:1)
di fn (penggantian modul panas:62:1)
di ./node_modules/mysql/lib/protocol/sequences/Query.js (Query.js:7:1)
di options.factory (refresh react:6:1)</pre>
<p>Ini ialah fail Search.jsx.我创造</p>
<pre class="lang-js prettyprint-override"><kod>import {Component} daripada "react";
import ItemDisplay daripada "./itemDisplay";
import item daripada "./item";
import { ujian } daripada "./DB_functions";
Carian kelas memanjangkan Komponen{
pembina() {
super();
this.state = {
item: []
}
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState({value: event.target.value});
}
handleSubmit(event) {
console.log(this.state.value);
alert('Nama telah diserahkan: ' + this.state.value);// sebaliknya kami menghantar this.state.val ke belakang
input var = this.state.value.toLowerCase()
//cari dalam produk aws
var mysql = memerlukan('mysql');
alert("SQL diperlukan");
var sql = "PILIH * DARI produk WHERE productName = ?"
var con = mysql.createConnection({
hos: "[Dialih keluar]",
pengguna: "[Dialih keluar]",
kata laluan: "[Dialih keluar]",
pelabuhan: '3306',
pangkalan data: "hs_db"
});
makluman("Sambungan dibuat");
con.query(sql, input, function(err, result)
{
makluman("Pertanyaan Dihantar");
jika (err)
membuang err;
lain
var usersRows = JSON.parse(JSON.stringify(result));
untuk (biar i = 0; i<usersRows.length; i++){
if(usersRows[i]['name'].includes(input));{
console.log(usersRows[i]['name'])
this.state.items.push(usersRows[i]['name']);
}
}
console.log(usersRows);
})
con.end();
var item = this.state.item
// // ini adalah carian demo
// item const = [];
// untuk (biar i = 0; i<this.state.orgitems.length; i++){
// if (this.state.orgitems[i].name.toLowerCase().includes(this.state.value.toLowerCase())){
// console.log(this.state.orgitems[i].name)
// items.push(this.state.orgitems[i]);
// }
// }
this.setState({item});
// tamat demo
event.preventDefault(); // terima data, dan kemudian hantar data
}render() {
kembali(
<div class='m-2'>
<div className="kumpulan input">
<jenis input="carian" className="kawalan bentuk bulat" pemegang tempat="Cari" aria-label="Cari"
aria-describedby="cari-tambah" onChange={this.handleChange}/>
<butang onClick={this.handleSubmit} type="butang" className="btn btn-outline-dark">search</button>
</div>
<ItemDisplay items={this.state.items}></ItemDisplay>
</div>
);
}
}
eksport Carian lalai;
</code></pre>
<p>我知道当我尝试在这一行创建与数据库的连接时会引发错误</p>
<pre class="lang-js prettyprint-override"><code>var con = mysql.createConnection({
hos: "[Dialih keluar]",
pengguna: "[Dialih keluar]",
kata laluan: "[Dialih keluar]",
pelabuhan: '3306',
pangkalan data: "hs_db"
});
</code></pre>
<p>但我知道该信息是正确的。我能够在不同的客户端上毫无问题地访问问题地访问应间。耶和模糊,因此很难调试</p>
Jangan sekali-kali memberi pengguna akses kepada pangkalan data anda di bahagian hadapan. Untuk mencapai apa yang anda mahu lakukan, anda perlu membuat pelayan bahagian belakang dan berkomunikasi dengannya menggunakan permintaan HTTP.
Anda akan menemui tutorial tentang cara melakukan ini di sini.