我想将router.get()与来自sql查询的查询分开,但是当我将直接函数声明为router.get()函数的参数时,却出现了此错误,它可以工作。
User.js
const express = require('express');
const router = express.Router();
const database = require('../queries/userQueries');
router.get('/users',database.getAllUsers);
module.exports = router;
userQueries.js
function getAllUsers(req, res, next) {
res.locals.connection.query('SELECT * from usuarios',
function (error, results, fields) {
if (error){
res.send(error);
return;
}
res.send(results);
});
};
module.exports = getAllUsers;
错误:Route.get()需要回调函数,但在Route上获得了[对象未定义]。(匿名函数)[as get](/home/antonio/achaiAPI/node_modules/express/lib/router/route.js:202 :15),位于Object的Function.proto。(匿名函数)[/ get](/home/antonio/achaiAPI/node_modules/express/lib/router/index.js:510:19)。(/home/antonio/achaiAPI/api/routes/user.js:11:8)位于Object.Module._extensions..js(内部)的Module._compile(内部/modules/cjs/loader.js:678:30) /modules/cjs/loader.js:689:10)位于try.ModuleLoad(internal / modules / cjs / loader.js:528:12)具有Module.load(internal / modules / cjs / loader.js:589:32) Function.Module._load(internal / modules / cjs / loader.js:520:3)位于require。(internal / modules / cjs / loader.js:626:17)在require(internal / modules / cjs / helpers。 js:20:18)
你分配功能getAllUsers
本身的module.exports
,而不是一个性质的module.exports
。因此,当您使用导入它时require
,它将解析为所述function,而不是将该函数作为其属性之一的对象。
尝试将导入的对象分配给代表该函数的变量名称:
const express = require('express');
const router = express.Router();
const getAllUsers = require('../queries/userQueries');
router.get('/users', getAllUsers);
module.exports = router;
你会用
const database = require('../queries/userQueries');
router.get('/users',database.getAllUsers);
当您userQueries.js
已将功能分配给的属性时exports
:
module.exports.getAllUsers = function getAllUsers( ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句