我收到了这个意外错误 nodejs(Express)。 每当我控制台 req.file 或 req.files 时, undefined 都会被控制台
三个文件如下:
注册
const express = require("express");
const profilePictureConfig = require("../multer/profilePictureConfig");
const userModel = require("../models/userModel");
const tokenRequired = require("../middleware/tokenRequired");
const genHash = require("../helper/genHash");
router = express.Router();
router
.post("/signup", profilePictureConfig, async (req, res, next) => {
let profile_picture = req.file?.path ? `\\${req.file.path}` : null;
console.log("req file here");
console.log(req.file); // Prints undefined
console.log(req.files); // Prints undefined
try {
const hash = await genHash(req.body.password);
let newUser = new userModel({
...req.body,
password: hash,
is_admin: false,
profile_picture,
});
await newUser.save();
res.status(200).send(newUser);
} catch (e) {
console.log(e.errors);
next(e);
}
})
处理所有multer配置
const multer = require("multer");
var storage = multer.diskStorage({
destination: function (req, file, cb) {
return cb(null, "./public/pp");
},
filename: function (req, file, cb) {
return cb(null, Date.now() + " -- " + file.originalname);
},
});
module.exports = multer({ storage: storage }).single("profile_picture");
所有文件的父级
const express = require("express");
const app = express();
const tokenHandler = require("./middleware/tokenHandler");
const userController = require("./controller/userController");
app.use(express.json());
app.use("/public", express.static(__dirname + "/public"));
app.use(tokenHandler);
app.use("/user", userController);
app.use((req, res, next) => {
const error = new Error("404! Not Found");
error.status = 404;
next(error);
});
app.use((err, req, res, next) => {
console.log(err);
res.status(err.status || 500);
res.send({ error: err.message });
});
答案 0 :(得分:0)
您的配置看起来不错。您能检查一下 pp
文件夹中是否有子文件夹 public
?也许你没有创建那个文件夹,所以 Multer
不能在那里存储文件。