Как избежать ошибок Net.createConnection в Node
В настоящее время я создаю приложение с React и Node.js
В этом приложении мне нужно запросить базу данных на моем собственном сервере с помощью следующей функции, расположенной в отдельном файле с именем «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+"'");
}
Это отлично работает, когда я запускаю файл с помощью Node из командной строки. Однако, когда я пытаюсь импортировать его в свое приложение для реагирования с помощью
import { fetchTracks, addTracks } from '../scripts/database'
Я начинаю получать ошибки в файле базы данных, особенно Unhandled Rejection (TypeError): Net.createConnection is not a functionпри вызове fetchQuery.
Из того, что я читал, это происходит при попытке вызвать функцию из браузера, так как это может создать угрозу безопасности. Однако, насколько я понимаю, все операции узла выполняются на стороне сервера, не так ли? Почему я должен получать этот флаг, если якобы база данных запрашивается до обслуживания страницы? Что мне нужно сделать, чтобы это исправить?
Ответы
React запускается в браузере, поэтому, как только вы включаете database.jsприложение React, оно запускается в браузере вместе с остальной частью React, поэтому вы, конечно же, получите сообщение об ошибке. Выполнение этой работы дает два варианта:
предоставить конечную точку API из Node для React для вызова, и эта конечная точка API вызывает database.js или,
исследуйте рендеринг на стороне сервера для React, где некоторые из ваших приложений React - в частности, более статические его части, такие как ваше главное меню - создаются на стороне узла, и только окончательный HTML-код отправляется в браузер. (Хотя это большая тема сама по себе.)
По вашему примеру, который принимает параметр даты для SQL, я предполагаю, что № 2 не вариант.