У меня есть мой бэкэнд в NodeJs и интерфейс в angular2 +. Я получаю эту ошибку, когда запускаю файл server.js в Терминале с помощью команды
nodemon server.js
Ошибка -
throw new TypeError ('Router.use () требует функции промежуточного программного обеспечения, но
получил '+ gettype (fn))
^
TypeError: Router.use () требует функцию промежуточного программного обеспечения, но получил
Объект
И это указывает на эту строку -
app.use('/login', require('./api-mine-server/controller/login-
controller'));
Я проверил много сообщений на stackoverflow с той же ошибкой, и я попробовал несколько, но я не получаю вывод. Я еще не внедрил токен
server.js
// Server definitions
require('rootpath')();
var express = require('express');
var cors = require('cors');
var bodyParser = require('body-parser');
const neo4j = require('neo4j-driver').v1;
var restify = require('restify');
var expressJwt = require('express-jwt');
var session = require('express-session');
var config = require('./config.json')
var app = express();
var router = express.Router();
module.exports = router;
var port = 3003;
app.use(restify.plugins.bodyParser());
app.use(bodyParser.urlencoded({ extended: false }));
// app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' }))
app.use(cors());
//Express Token
app.use(session({ secret: config.secret, resave: false, saveUninitialized: true }));
// use Express-JWT auth to secure the api, the token can be passed in the authorization header or querystring.
app.use(expressJwt({
secret: config.secret,
getToken: function (req) {
console.log("####### ", req.headers)
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if (req.query && req.query.token) {
return req.query.token;
}
return null;
}
})
);
// ----------------- File Uploader code -------------------------
// var express = require('express');
var multer = require('multer');
var path = require('path');
var app = express();
var mkdirp = require('mkdirp')
var port = 3003;
// var fileNameController = require('./api-mine-server/api-mine-controller');
// File Upload YAML and WSDL
var myModuleYaml = require('./api-mine-server/controller/api-mine-yaml-controller');
var myModuleWsdl = require ('./api-mine-server/wsdl-server/api-mine-wsdl-controller.js')
// specify the folder
app.use(express.static(path.join(__dirname, 'uploads'))); //uncomment it
// // headers and content type
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*"); //uncomment it
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
var storage = multer.diskStorage({
destination: function (req, file, cb) {
// console.log("im in storage");
// var dir = './uploads/'+req.dataProviderId+'/'+req.consentId;
var dir = './uploads/';
mkdirp(dir, function (err) {
if (err) {
console.error(err);
}
// move cb to here
cb(null, dir);
});
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
var upload = multer({ storage: storage });
app.post("/upload", upload.array("uploads[]", 12), function (req, res) {
console.log("request = ", req)
fileName = req.files[0].path;
serverOrganisation = req.body.uploads[0];
serverDepartment = req.body.uploads[1];
serverSystem = req.body.uploads[2];
console.log("organisation =", serverOrganisation , " department = ",serverDepartment, " system = ", serverSystem)
var lastFive = fileName.substr(fileName.length - 5);
console.log( lastFive);
console.log("Filename.extension = lastFive letters = ", lastFive)
if(lastFive == ".yaml"){
myModuleYaml.defineRoutes(router, fileName);
console.log("global variable FileName = ", fileName)
}
if (lastFive == ".wsdl"){
myModuleWsdl.defineRoutes(router,fileName,serverOrganisation,serverDepartment,serverSystem)
console.log("global variable FileName = ", fileName)
}
console.log('files', req.files);
console.log("request filename = ", req.files[0].filename);
console.log("request file path = ", req.files[0].path);
res.send(req.files);
});
//reason for removal of undefined
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
// app.use(app.router);
// routes.initialize(app);
app.use('/seekOrganization', require('./api-mine-server/controller/seekOrganization-controller'));
app.use('/deleteAll', require('./api-mine-server/controller/deleteAll-controller'));
app.use('/deleteRelationships', require('./api-mine-server/controller/deleteRelationships-controller'));
app.use('/seekExtraction', require('./api-mine-server/controller/seekExtraction-controller'));
app.use('/seekIntersection', require('./api-mine-server/controller/seekIntersection-controller'))
app.use('/seekParentNodeCount', require('./api-mine-server/controller/seekParentNodeCount-controller'))
app.use('/seekAccurateParentNodeCount', require('./api-mine-server/controller/seekAccurateParentNodeCount-controller'));
app.use('/seekAccurateExtraction', require('./api-mine-server/controller/seekAccurateExtraction-controller'));
//------- server.js variables -------------------
//var cors = require('cors');
var fs = require('fs');
var path = require('path');
var compression = require('compression');
var morgan = require('morgan');
var app = express();
var router = express.Router();
app.use(compression());
app.use(cors());
//reason for removal of undefined
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
//login and registration
app.use('/register', require('./api-mine-server/controller/register-controller'));
app.use('/login', require('./api-mine-server/controller/login-controller'));
var port = 3003;
var server = app.listen(process.env.PORT || port, function() {
console.log('Server listening at http://' + server.address().address + ':' + server.address().port);
});