我正在尝试使用配置文件图片上载输入字段创建用户注册。这是我正在处理的文件。js。第31行出现错误:if(password.length
const express = require("express");
const router = express.Router();
const bcrypt = require("bcryptjs");
const passport = require("passport");
const multer = require('multer');
const path = require('path');
// Load User model
const User = require("../models/User");
const {forwardAuthenticated} = require("../config/auth");
// Login Page
router.get("/login", forwardAuthenticated, (req, res) => {
res.render("login", {title: "Login", layout: "layout"});
});
// Register Page
router.get("/register", forwardAuthenticated, (req, res) => {
res.render("register", {title: "Register", layout: "layout"});
});
// Register
router.post("/register", (req, res) => {
const {name, email, password, password2} = req.body;
let errors = [];
if (!name || !email || !password || !password2) {
errors.push({msg: "Please enter all fields"});
}
if (password.length < 6) {
errors.push({msg: "Password must be at least 6 characters"});
}
if (password != password2) {
errors.push({msg: "Passwords do not match"});
}
if (errors.length > 0) {
res.render("register", {
errors,
name,
email,
password,
password2,
title: "Register",
layout: "Layout",
});
} else {
User.findOne({email: email}).then((user) => {
if (user) {
errors.push({msg: "Email already exists"});
res.render("register", {
errors,
name,
email,
password,
password2,
title: "Register",
layout: "Layout",
});
} else {
const newUser = new User({
name,
email,
password,
filepath
});
//Set The Storage Engine
const storage = multer.diskStorage({
destination: './public/uploads/',
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + newUser._id + path.extname(file.originalname));
}
});
// Init Upload
const upload = multer({
storage: storage,
limits: {fileSize: 1000000},
fileFilter: function (req, file, cb) {
checkFileType(file, cb);
}
}).single('avatar');
// Check File Type
function checkFileType(file, cb) {
// Allowed ext
const filetypes = /jpeg|jpg|png|gif/;
// Check ext
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
// Check mime
const mimetype = filetypes.test(file.mimetype);
if (mimetype && extname) {
return cb(null, true);
} else {
cb('Error: Images Only!');
}
}
newUser.filepath = storage;
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
newUser.password = hash;
newUser
.save()
.then((user) => {
req.flash(
"success_msg",
"You are now registered and can log in"
);
res.redirect("/users/login");
})
.catch((err) => console.log(err));
});
});
}
});
}
});
// Login
router.post("/login", (req, res, next) => {
passport.authenticate("local", {
successRedirect: "/dashboard",
failureRedirect: "/users/login",
failureFlash: true,
})(req, res, next);
});
// Logout
router.get("/logout", (req, res) => {
req.logout();
req.flash("success_msg", "You are logged out");
res.redirect("/users/login");
});
module.exports = router;
错误:
类型错误:无法读取属性'长度'的未定义在D:\temp_project\smpms\路由\users.js:31: 18在Layer.handle[handle_request](D:\temp_project\smpms\node_modules\Express\lib\router\layer.js:95: 5)在下一个(D:\temp_project\smpms\node_modules\Express\lib\router\route.js:137: 13)在Route.dispatch(D:\temp_project\smpms\node_modules\Express\lib\router\route.js:112: 3)在Layer.handle[handle_request](D:\temp_project\smpms\node_modules\Express\lib\router\layer.js:95: 5)在D:\temp_project\smpms\node_modules\Express\lib\router\index.js:281: 22在Function.process_params(D:\temp_project\smpms\node_modules\lib\router\index.js:335: 12)在下一个(D:\temp_project\smpms\node_modules\Express\lib\router\index.js:275: 10)在Function.handle(D:\temp_project\smpms\node_modules\Express\lib\router\index.js:174: 3)在路由器(D:\temp_project\smpms\node_modules\lib\router\index.js:47: 12)在Layer.handle[handle_request](D:\temp_project\smpms\node_modules\Express\lib\router\layer.js:95: 5)在trim_prefix(D:\temp_project\smpms\node_modules\Express\lib\router\index.js:317: 13)在D:\temp_project\smpms\node_modules\Express\lib\router\index.js:284: 7在Function.process_params(D:\temp_project\smpms\node_modules\Express\lib\router\index. js: 335:12)在下一个(D:\temp_project\smpms\node_modules\Express\lib\router\index. js: 275:10)在D:\temp_project\smpms\node_modules\Express\lib\router\index. js: 635:15
我如何解决这个问题?
您正在检查密码的长度,即使它未定义。
尝试以下方法。
if (password && password.length < 6) {...}
为什么children.length导致未处理拒绝(TypeError):无法读取未定义的属性(读取'length'),特别是因为children.length的值已成功地显示在控制台上?
(节点:55028)UnhandledPromiserEjectionWarning:TypeError:无法读取位于/users/PatrickStanciu/WebStormProjects/AUTISMAssistant/Backend/API/Controllers/PaymentsController.js:1045:34 位于processTicksAndRejections(inte
我试图只显示一个覆盖,如果我的搜索输入包含任何文本。 这是我的模板,其中我的输入字段是: : 当我在控制台中进行检查时,会更新我在输入字段中写入的任何文本。 然后,我尝试将此变量传递给另一个组件,该组件保存我的overlay div: Overlay.vue: 然而,这给我下面的错误: [Vue warn]:呈现错误:“TypeError:无法读取未定义的属性'length'” 我到底做错了什么?
如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')
下午好,我是新反应和Node.js和我有一个问题。 我在一个网页上有一个表格,你将在那里收到旅行的数据。travel_order模型中存在这些列(Id locales、name、date、time),但是“lockations name”列旨在使用Id列出这些地方的名称。此位置的ID在“地点ID”列中列出。但是,在列出时,它给我一个错误:“TypeError:不能读取未定义的属性'Designac
问题内容: 我试图在ajax回调从REST api接收数据后设置组件的setState。这是我的组件构造函数代码 然后,我有一个如下所示的方法。 现在,这是我执行getAJAX请求的getPosts函数。 我想设置状态,但出现以下错误。 不太清楚是什么原因造成的。如果有人指出我正确的方向,那将真的很有帮助。提前致谢。 问题答案: 还绑定回调函数,以便回调内部指向React Component的上下