NodeJS&Express:无法访问文件夹程序外部的功能

时间:2019-04-22 18:21:20

标签: javascript node.js express npm node-modules

我无法访问我在app.js中导出的​​功能

在app.js文件中:

function getConnection() {
    return mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'Academind'
    })
}

module.exports = {
    getConnection: function () {
        return getConnection()
    }
}

在我的orders.js文件中:

const app = require('../../app')

function getConnection() {
    return app.getConnection() // doesn't work 
}

我收到此错误:

  

app.getConnection不是函数

2 个答案:

答案 0 :(得分:0)

问题与您如何导出getConnection(...)方法有关,应将其更改为以下内容以解决问题:

app.js

function getConnection() {
    return mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'Academind'
    })
}

module.exports = {
    getConnection: getConnection
}

然后在需要它的模块中使用它,如下所示:

orders.js

const app = require('../../app')
const getConnection = app.getConnection

// get your database connection string 
getConnection()

以前,您正在创建一个匿名函数,该函数称为getConnection()函数,该函数返回数据库连接字符串值而不是该函数。这就是为什么您看到以下错误的原因:

  

app.getConnection不是函数

因为它是包含数据库连接详细信息的字符串,而不是函数。

现在,我们正在将您的getConnection()函数导出为一个适当地称为getConnection()的函数,以便在其他模块中使用。

希望有帮助!

答案 1 :(得分:-1)

您不需要通过函数内部的return函数。

function getConnection() {
    return mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'Academind'
    })
}

module.exports = {
    getConnection: getConnection
}

您只需要传递函数的引用即可。