【发布时间】:2021-01-09 22:58:41
【问题描述】:
我目前正在使用 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'
我开始在数据库文件中遇到错误,特别是在我的 fetchQuery 调用中出现Unhandled Rejection (TypeError): Net.createConnection is not a function。
根据我的阅读,尝试从浏览器调用函数时会发生这种情况,因为这会带来安全风险。但是,据我了解,所有节点操作都是在服务器端执行的,对吧?当在提供页面之前查询数据库时,为什么我会得到这个标志?我需要做什么来修改这个?
【问题讨论】:
-
你的 react 组件是在服务器端渲染的吗?如果不是,很可能您的库正在尝试在客户端执行任务
-
@DipenShah 我目前正在使用 npm 开发服务器进行开发。这不会发生在“服务器”端吗?
-
那是服务器肯定的,但这并不意味着你正在做服务器端渲染。基本上,启用服务器端渲染的应用程序只是将纯 html 和 CSS 发送到客户端浏览器,同时在服务器端完成所有繁重的工作
-
如果您看到这个函数调用是从浏览器发出的,这将不起作用。 Net 库仅在 node 环境中可用。
-
这里的答案比我在 cmets 中的解释要好得多。 stackoverflow.com/questions/38005968/…
标签: javascript node.js reactjs