javascript - TypeError: Router.use() 需要一个中间件函数,但得到一个对象 nodejs
问题描述
我正在制作一个登录系统nodejs api,但是当我添加注册路线时,它给了我一些这样的错误,我正在使用 express@^4.16
C:\projects\mernapp\backend\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 Object
at Function.use (C:\projects\mernapp\backend\node_modules\express\lib\router\index.js:458:13)
at Function.<anonymous> (C:\projects\mernapp\backend\node_modules\express\lib\application.js:220:21)
at Array.forEach (<anonymous>)
at Function.use (C:\projects\mernapp\backend\node_modules\express\lib\application.js:217:7)
at Object.<anonymous> (C:/projects/mernapp/backend/src/app.js:18:5)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at loader (C:\projects\mernapp\backend\node_modules\babel-register\lib\node.js:144:5)
at Object.require.extensions.(anonymous function) [as .js] (C:\projects\mernapp\backend\node_modules\babel-register\lib\node.js:154:7)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at Object.<anonymous> (C:\projects\mernapp\backend\node_modules\babel-cli\lib\_babel-node.js:154:22)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
[nodemon] app crashed - waiting for file changes before starting...
我确实谷歌了这个错误,我也在stackoverflow上发现了一些问题,但这没有用。 Router.use() 需要一个中间件函数,但有一个未定义的
这是我的代码 app.js
import auth from './routes/auth';
import user from './routes/user';
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use('/api/auth', auth);
app.use('/api/user', user);
路线/注册
import express from 'express';
import bcrypt from 'bcrypt';
import validateRegisterInput from '../validation/register';
import User from '../models/User';
const router = express.Router();
router.post('/register', function (req, res){
const { errors, isValid } = validateRegisterInput(req.body);
if(!isValid) {
return res.status(400).json(errors);
}
User.findOne({
email: req.body.email
}).then(user => {
if (user) {
return res.status(400).json({
email: 'Email already exists'
});
} else {
const newUser = new User({
firstname: req.body.firstname,
lastName: req.body.lastname,
email: req.body.email,
password: req.body.password
});
bcrypt.genSalt(10, (err, salt) => {
if (err) console.error('There was an error', err);
else {
bcrypt.hash(newUser.password = hash);
newUser
.save().then(user => {
res.json(user)
});
}
})
}
})
})
解决方案
推荐阅读
- python - 如何在python中使用re从PT格式日期时间中提取分钟和秒
- python - 使用频率大于一天的“DataFrame.pct_change()”时出现“ValueError:无法从重复轴重新索引”(“D”)
- google-bigquery - 插入的值不正确
- office-js - 在加载项命令中使用 imageMSO 图标
- objective-c - 如何通过 NSTask/Process 执行 `aerender` 命令行工具?
- java - 比较和排序字符串 Java
- dart - 多次将表单数据添加到列表中
- python-3.x - 将 JPG、PNG 等格式转换为 PGM 并制作数组:Python
- apache-kafka - 如何设置消费者的最大重试次数
- c++ - 如何正确实现询问用户是否要重新执行代码的循环?