【问题标题】:NodeJS requiring modulesNodeJS 需要模块
【发布时间】:2012-09-03 11:45:35
【问题描述】:

首先,关于 Node.js,我是一个全新的开发人员。

我已经开始创建一个示例 express 应用程序,并且我想使用一个额外的模块来了解它的更多信息。我已经通过 npm 安装了“mysql”模块,一切正常。

我在app.的开头添加了它,像这样:

var mysql = require('mysql');

现在,如您所知,express 在目录路由中创建了一个 index.js 文件:我希望能够访问 mysql 变量以从此 index.js 页面连接到数据库,但是,使用命令

var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'root',
});

显然不起作用,给出“500 ReferenceError: mysql is not defined”。

当然,我确定我需要传递这个变量,但我真的不知道,有没有好的灵魂可以启发我?我知道这是一件非常小而基本的事情,但我已经尝试过了,但似乎不起作用:

... app.get('/', routes.index, mysql); ...

在 index.js 上:

exports.index = function(req, res, mysql){ ...

【问题讨论】:

    标签: node.js node-modules


    【解决方案1】:

    在 Node.js 中,您应该在需要使用它们的文件中 require 模块;所以,如果你想在 routes/index.js 文件中使用 mysql 包,请在该文件的顶部执行

    var mysql = require('mysql');
    

    您最终可能需要在多个文件中使用一个模块;这是正常的,在很多方面都是一件好事(没有命名空间问题等)

    如果您想了解有关模块和包的更多信息,您可能会对以下两个截屏视频感兴趣:

    【讨论】:

      【解决方案2】:

      通过app.get() 传递mysql 对象是正常的反应,但我很确定你想多了。

      就像在routes/index.js 的顶部包含var mysql = require('mysql'); 一样简单。实际上,如果所有数据库交互都在您的路由中完成,您可能会发现您甚至不需要在 app.js 中要求 mysql。

      【讨论】:

        猜你喜欢
        • 2013-03-16
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-19
        • 1970-01-01
        • 1970-01-01
        • 2016-05-29
        相关资源
        最近更新 更多