未捕获的TypeError:Net.createConnection不是函数(...)

时间:2016-11-04 14:54:08

标签: mysql reactjs

使用mysqljs,我想查询本地数据库中的一些数据并使用react进行渲染。 这就是我到目前为止所做的:

import React from 'react';
var mysql      = require('mysql');
var connection = mysql.createConnection({
    host : 'localhost',
    user : 'root',
    password: '',
    database: 'pep'
});

connection.connect();
var Menu=React.createClass({
    data : function (){
        connection.query('Select * from '+this.props.table, function(err, rows, fields){
            if(err) throw err;
            console.log(rows);
        })
    },
    render : function () {
        return (
            <div>
                <button onClick={this.data}>click</button>
            </div>
        );
    }
});
export default Menu;

(另一个文件正在使用Menu组件并将props传递给Menu)

没有显示任何内容,并且在bowser控制台中出现此错误:

Connection.js:91 Uncaught TypeError: Net.createConnection is not a function
    at Connection.connect (webpack:///./~/mysql/lib/Connection.js?:91:13)
    at eval (webpack:///./src/Menu.js?:24:12)
    at Object.<anonymous> (http://localhost:3000/static/js/bundle.js:2983:2)
    at __webpack_require__ (http://localhost:3000/static/js/bundle.js:556:30)
    at fn (http://localhost:3000/static/js/bundle.js:87:20)
    at eval (webpack:///./src/Combobox.js?:18:13)
    at Object.<anonymous> (http://localhost:3000/static/js/bundle.js:3121:2)
    at __webpack_require__ (http://localhost:3000/static/js/bundle.js:556:30)
    at fn (http://localhost:3000/static/js/bundle.js:87:20)
    at eval (webpack:///./src/App.js?:18:17)

为什么?我如何解决这个问题或者我该怎么做以便使用react从db获取数据?

1 个答案:

答案 0 :(得分:2)

mysqljs relies on Node's net library。您的浏览器中没有此API,因此如果没有重大更改,您将无法以这种方式使用该库。

您无论如何都不应建立从客户端浏览器到后备数据库的直接连接,因为您的mysql数据库服务器不一定是为此用例构建的。而是通过专用Web服务器RESTful web services发布您的数据。例如,您可以为此目的使用Node.jsrestify框架。