Ada beberapa perubahan middleware pada versi baru express dan saya telah membuat beberapa perubahan dalam kode saya di sekitar beberapa posting lain tentang masalah ini, tetapi saya tidak bisa mendapatkan apa pun untuk tetap.
Kami sudah bekerja sebelumnya, tetapi saya tidak ingat apa perubahannya.
throw new TypeError('Router.use() requires middleware function but got a
^
TypeError: Router.use() requires middleware function but got a Object
node ./bin/www
js-bson: Failed to load c++ bson extension, using pure JS version
js-bson: Failed to load c++ bson extension, using pure JS version
/Users/datis/Documents/bb-dashboard/node_modules/express/lib/router/index.js:438
throw new TypeError('Router.use() requires middleware function but got a
^
TypeError: Router.use() requires middleware function but got a Object
at /Users/datis/Documents/bb-dashboard/node_modules/express/lib/router/index.js:438:13
at Array.forEach (native)
at Function.use (/Users/datis/Documents/bb-dashboard/node_modules/express/lib/router/index.js:436:13)
at /Users/datis/Documents/bb-dashboard/node_modules/express/lib/application.js:188:21
at Array.forEach (native)
at Function.use (/Users/datis/Documents/bb-dashboard/node_modules/express/lib/application.js:185:7)
at Object.<anonymous> (/Users/datis/Documents/bb-dashboard/app.js:46:5)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var session = require('express-session');
var MongoClient = require('mongodb').MongoClient;
var routes = require('./routes/index');
var users = require('./routes/users');
var Users = require('./models/user');
var Items = require('./models/item');
var Store = require('./models/store');
var StoreItem = require('./models/storeitem');
var app = express();
//set mongo db connection
var db = mongoose.connection;
MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
if(!err) {
console.log("We are connected");
}
});
// var MONGOHQ_URL="mongodb://localhost:27017/test"
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({
secret: 'something',
resave: true,
saveUninitialized: true
}));
app.use('/', routes);
app.use('/users', users);
app.use(express.static(path.join(__dirname, 'public')));
// catch 404 and forward to error handler
// app.use(function(req, res, next) {
// var err = new Error('Not Found');
// err.status = 404;
// next(err);
// });
// Make our db accessible to our router
app.use(function(req, res, next){
req.db = db;
next();
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
Tampaknya jawaban untuk pertanyaan ini telah berubah karena alasan versi. Terima kasih kepada Nik
javascript
node.js
express
Datise
sumber
sumber
routes/index
danroutes/users
dikembalikan?Jawaban:
Jika Anda menggunakan express di atas 2.x, Anda harus mendeklarasikan app.router seperti kode di bawah ini. Silakan coba ganti kode Anda
dengan
Silakan klik di sini untuk mendapatkan detail lebih lanjut tentang app.router
Terima kasih
catatan:
app.router disusutkan dalam express 3.0+. Jika Anda menggunakan express 3.0+, lihat jawaban Anirudh di bawah ini.
sumber
Di salah satu halaman js Anda, Anda tidak ada
Periksa dan verifikasi semua halaman JS Anda
sumber
export {router}
juga memberikan kesalahan itus
di akhir: |Solusi sederhana jika Anda menggunakan express dan doing
pastikan untuk
di akhir halaman Anda
sumber
Saya mendapatkan pesan kesalahan yang sama tetapi memiliki masalah yang berbeda. Posting untuk orang lain yang macet sama.
Aku porting
get
,post
,put
,delete
fungsi ke file router baru sementara refactoring, dan lupa untuk mengedit jalur. Contoh:Salah:
Benar:
Butuh beberapa saat untuk mengenali, karena kesalahan saya memeriksa sintaksis di mana saya mungkin telah membungkus argumen dalam suatu objek atau di mana saya melewatkan
module.exports = router;
sumber
periksa file route.js Anda
contoh route.js saya
periksa ujung route.js
module.exports = router
jika tidak ada tambahkan dan module.exports = router jalankan lagi
goto controller.js (ie, usersController) dan periksa semua nama fungsi yang mungkin Anda salah eja, atau Anda berikan dalam file rute fungsi tetapi tidak terjawab di contollers
di routes.js saya diberikan dua rute tetapi di controller saya tidak bisa menentukan rute
router.post ('/ pengguna / login')
ini akan membuat kesalahan **
"TypeError: route.post () membutuhkan fungsi middleware tetapi mendapat Object"
**
sumber
Saya memiliki kesalahan dan bantuan solusi ini yang diposting oleh Anirudh. Saya membuat templat untuk perutean cepat dan lupa tentang nuansa ini - senang itu mudah diperbaiki.
Saya ingin memberikan sedikit klarifikasi untuk jawabannya di mana harus meletakkan kode ini dengan menjelaskan struktur file saya.
Struktur file khas saya adalah sebagai berikut:
---index.js
(mengontrol navigasi utama)(setiap file [dalam kasus saya index.js dalam halaman-dua, meskipun halaman-satu akan memiliki index.js juga] - untuk setiap halaman - yang menggunakan
app.METHOD
ataurouter.METHOD
perlu memilikimodule.exports = router;
di akhir)Jika seseorang mau, saya akan memposting tautan ke template github yang mengimplementasikan perutean cepat menggunakan praktik terbaik. biarkan aku tahu
Terima kasih Anirudh !!! untuk jawaban yang bagus
sumber
Periksa semua file Anda ini:
Simpan dengan benar, Dalam kasus saya, satu file terlewatkan dan melempar kesalahan yang sama
sumber
Dalam kasus saya, saya tidak mengekspor modul.
module.exports = router;
sumber
module.exports = router;