使用module.exports通过脚本使用变量不起作用

时间:2018-12-11 14:21:21

标签: javascript node.js

因此我在这里拉头发,而我尝试过的所有方法都无效。我有一个简单的node.js应用程序结构,如下所示:

var express = require('express');
var path = require('path');

var mysql = require('mysql');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);


//Database handler
//Here is completed with the data
var con = mysql.createConnection({
  host: "",
  user: "",
  password: "",
  database: ""
});

con.connect(function (err) {
  if(err) throw err;
  console.log("connected");
});

app.listen(55132, function () {
  console.log("Server running at port 55132");
});

module.exports = app;

非常简单,有一些路由但没有任何怪异。我需要在其他脚本中使用变量con,所以我尝试了以下方法:

module.exports.database = con;

所以我应该能够在我的index.js脚本中使用它(请参阅var indexRouter),所以这里是index.js脚本:

var express = require('express');
var router = express.Router();
let app = require('../app');

let connection = app.database;

console.log(app); //Here returns {} so I can´t access any of the properties of the module

/* GET home page. */
router.get('/', function(req, res, next) {

}

module.exports = router;

一些建议,我不知道该怎么办?

2 个答案:

答案 0 :(得分:1)

  

进一步阅读,我建议您阅读   https://nodejs.org/api/modules.html#modules_exports_shortcut

只需将您的应用文件导出更改为

 module.exports = {app,con};

以及您的索引文件

const {app,con} = require('./app');
let connection = con;

答案 1 :(得分:0)

您可以尝试

例如:

var function = function(coid, userid, callback)   {}
exports.function = function ;

以您的情况

exports.database = con;

现在它应该可以工作了,您不需要在上面添加模块。