【发布时间】:2020-12-27 12:37:21
【问题描述】:
我已经使用 node.js 编写了一个 CRUD。我需要使用另一个节点项目作为微服务。所以我使用 axios npm 模块向另一个节点项目发送 http 请求。当我运行代码时,再次出现以下错误再一次。如何解决它。 这是我的 index.js 文件
const axios = require('axios').default;
const express=require('express');
const bodyParser=require('body-parser');
const mysqlConnection=require('./connections');
const cors = require('cors');
mysqlConn = mysqlConnection.startDBConnection();
// console.log(mysqlConn);
var app=express();
app.use(bodyParser.json());
const emp=require('./routes/employee')(express.Router(), mysqlConn);
app.use('/employeeDetails',emp);
app.listen(3001,()=>console.log('express server is working at port:3001'));
这是路由文件。 员工.js
const apiAdapter = require('./apiAdapter');
const BASE_URL = 'http://localhost:3000';
const api = apiAdapter(BASE_URL);
module.exports = (router, mysqlConnection) => {
router.get('/employees/:id', (req, res) => {
mysqlConnection.query('SELECT * FROM Employee WHERE Id = ?', [req.params.Id], (err, rows, fields) => {
if (!err)
res.send(fields);
else
console.log(err);
})
api.get('/checkAudtStatus',req.body)
.then(respond)
{
if(respond.data===true)
{
api.post('/createAuditRecord',req.body)
.then(respond)
{
res.send(res.data)
}
}
}
})
router.post('/employees',(req,res)=>{
emp = {
"Id":req.body.Id,
"Name":req.body.Name,
"Age":req.body.Age,
"Salary":req.body.Salary,
"City":req.body.City
}
mysqlConnection.query("INSERT INTO Employee SET ?",emp, function(err, result){
// //If err, callback false
if(err){
res.send(false);
// res.send(false);
}
else{
res.send(result);
}
})
api.get('/checkAuditStatus',req.body)
.then(respond)
{
if(respond.data===true)
{
api.post('/createAuditRecord',req.body)
.then(respond)
{
res.send(res.data)
}
}
}
})
}
这是 apiAdapter.js
const axios = require('axios');
module.exports = (baseURL) => {
//allowing to handle other micro-services' urls by gateway
return axios.create({
baseURL: baseURL,
});
}
这是connection.js
var mysql = require('mysql');
//startDBConnection method
function startDBConnection(){
try{
var mysqlConnection = mysql.createPool({
host: 'localhost',
user: 'root',
connectionLimit:10,//port:'8080',
password: '',
database: 'Test',
//multipleStatements: true
});
return mysqlConnection;
}
catch(e){
console.log(e);
}
}
module.exports.startDBConnection = startDBConnection;
运行上述代码时出现以下错误。
[nodemon] app crashed - waiting for file changes before starting...
[nodemon] restarting due to changes...
[nodemon] starting `node index.js`
/home/naoda/Documents/test_/node_modules/express/lib/router/index.js:458
throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
^
TypeError: Router.use() requires a middleware function but got a undefined
at Function.use (/home/naoda/Documents/test_/node_modules/express/lib/router/index.js:458:13)
at Function.<anonymous> (/home/naoda/Documents/test_/node_modules/express/lib/application.js:220:21)
at Array.forEach (<anonymous>)
at Function.use (/home/naoda/Documents/test_/node_modules/express/lib/application.js:217:7)
at Object.<anonymous> (/home/naoda/Documents/test_/index.js:17:5)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
[nodemon] app crashed - waiting for file changes before starting...
【问题讨论】:
标签: javascript node.js json express microservices