Rumah  >  Soal Jawab  >  teks badan

React Node.js MySQL Uncaught ReferenceError: proses tidak ditentukan

<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>
P粉471207302P粉471207302417 hari yang lalu559

membalas semua(1)saya akan balas

  • P粉011684326

    P粉0116843262023-08-30 12:49:16

    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.

    balas
    0
  • Batalbalas