0

是否可以在 .html 文档中运行此 JavaScript 代码:

<script>
    function DBConnect() {
        var mysql = require('mysql');
        var mydb = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: 'admin123',
            database: 'users'
        });

        var username = user_name.value;
        mydb.connect();

        var query = ('select passwd from peer where username=' + username);

        console.log(query);

        connection.end(function(err) {
            // The connection is terminated now
        });
    }
</script>

因为当我尝试时总是得到一个错误:未定义的“require”,或者我如何在其他fe中调用这个函数:db.js?我已经有脚本 server.js,它是从 Node.js 运行的,你认为上面的代码应该在这里运行吗?

4

4 回答 4

4

忽略所有建议 browserify 的人。如果您对客户端-服务器架构有基本的了解,那么这将是有意义的,因此对 browserify 的局限性有直觉。你的问题的答案是

不。

Node.js 代码在服务器上运行。在您的代码中,您正在做无法在客户端完成的事情。在尝试编写处理敏感信息的代码之前,您可能应该了解原因。

于 2013-05-10T16:59:51.617 回答
2

使用browserify,您可以在浏览器上运行一些Node.js模块,但是执行如此繁重的I/O的模块无法在您的浏览器中运行。

所以不,您不能简单地获取此 Node.js 代码并尝试在浏览器中运行它。您必须设计一个适当的客户端-服务器应用程序,服务器执行对数据库的所有访问。

例如,您可以获得许多教程的解决方案可能是

  • 让您的浏览器 JavaScript 代码发出一些Ajax请求
  • 让您的服务器通过查询数据库来响应这些请求,并在响应中以JSON格式发送一些数据。
  • 使浏览器使用此 JSON 更改 HTML。

你可以从谷歌搜索"json node.js ajax mysql"开始,但是你面临着很多学习。

于 2013-05-10T16:44:59.790 回答
2

即使可以直接从HTML连接到MySQL数据库,这也是个坏主意。如果您在 HTML 中包含数据库凭据,则有权访问该网页的任何人都可以访问您的数据库并对其进行任何操作。这是一个坏主意。

于 2013-05-10T16:50:22.387 回答
0

您可能正在尝试在浏览器中执行 Node.js JavaScript 代码并且require无法识别关键字。

要在浏览器中导入 JavaScript 文件,您应该使用如下内容:

<script src="path/to/your/JavaScript/file"></script>
于 2013-05-10T16:46:00.473 回答