【发布时间】:2019-03-20 11:25:13
【问题描述】:
我正在使用 Express.js 和 MySQL 进行练习。目前我有4个文件。错误是,
TypeError: areas.getAreas is not a function
at Object.<anonymous> (/--/--/--/src/routes/userRoutes.js:4:13)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/--/--/--/src/app.js:10:20)
at Module._compile (module.js:653:30)
但我确定我是在声明变量和函数,所以我不明白为什么会这样。
我试图在 userRoutes.js 文件中获取变量 areas 的值,但控制台只显示一个“{}”。我还尝试更改 areas.js 文件的函数的 sintaxis,将其写为函数而不是对象。
主文件是 app.js,它包含:
const express = require('express');
const app = express();
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const connection = require('/--/--/--/db/connection.js');
const userRoutes = require('/--/--/--/routes/userRoutes.js');
app.set('port', process.env.PORT || 3000);
app.use(morgan('dev'));
app.use(bodyParser.json());
connection(mysql);
userRoutes(app);
app.listen(app.get('port'), ()=> {
console.log('server on port 3000');
});
接下来的文件是:
connection.js
'use strict';
module.exports = function connection(mysql){
mysql.createConnection({
host: 'http://x.x.x.x',
user: 'xxxxxxx',
password: 'xxxxxxx',
database: 'xxxxxxx'
})
};
areas.js
'use strict';
let areasModel = {};
areasModel.getAreas = (callback) => {
if(connection) {
connection.query(
"SELECT * FROM areas",
(err, rows) => {
if(err) {
throw err;
}
else {
callback(null, rows);
}
}
);
}
};
module.exports = areasModel;
userRoutes.js
'use strict';
const areas = require('../models/areas');
module.exports = function (app) {
app.get("/", (req,res)=>{
areas.getAreas((err, data) => {
res.json([]);
});
});
}
【问题讨论】:
-
你试过
console.log(areas)inuserRoutes.js吗? -
我在
areas.js中看到了connection变量的用法,但似乎没有声明它。 -
是的...,我试过了,但答案是“{}”。我想当应用程序收费时,userRouters.js 应该收费,area.js 也应该收费。调用userRouters(app)应该也可以执行area.js的内容吧?
标签: javascript mysql rest express