Javascript Express.js应用程序错误导致Route.post()需要回调函数,但出现[object Undefined]错误
我正在使用、和MongoDB开发一个(单击链接查看GitHub回购) 我正在尝试使用Multer引入一个添加后期图像功能。由于我是个新手,所以我遇到了麻烦 在Javascript Express.js应用程序错误导致Route.post()需要回调函数,但出现[object Undefined]错误,javascript,node.js,express,Javascript,Node.js,Express,我正在使用、和MongoDB开发一个(单击链接查看GitHub回购) 我正在尝试使用Multer引入一个添加后期图像功能。由于我是个新手,所以我遇到了麻烦 在utils\imageupload.js中,我添加了: const multer = require("multer"); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './upl
utils\imageupload.js
中,我添加了:
const multer = require("multer");
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads/images')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + '.png')
}
});
exports.upload = multer({ storage: storage }).single('postimage');
我在我的仪表板路由文件中导入并使用它:
const imageUploader = require('../../utils/validation.js');
//more code
// Add Post
router.post('/post/add', imageUploader.upload, validator.addPostCheck, dashboardController.addPost);
//more code
在控制器中,我有(除其他外):
只要行imageUploader.upload
在控制器中,整个应用程序就会崩溃,并出现错误:Route.post()需要回调函数,但出现[object Undefined]错误
我做错了什么?您有以下几行:
const imageUploader = require('../../utils/validation.js');
validation.js
不会导出您在此处使用的upload
:
// Add Post
router.post('/post/add', imageUploader.upload, validator.addPostCheck, dashboardController.addPost);
将导入更改为
const imageUploader = require('../../utils/imageupload.js');
应该可以解决这个问题
关于admin dashboard controller中的问题:既然您已经调用了multer upload,您可以在addPost
中删除它,req
现在应该包含上传的文件
exports.addPost = (req, res, next) => {
// removed the upload code
var form = {
titleholder: req.body.title,
excerptholder: req.body.excerpt,
bodyholder: req.body.body
};
...
Doh,我没看到!:)但是现在我遇到了另一个错误:
TypeError:upload不是exports.addPost(path\to\nodeblog\controllers\admin\dashboard.js:31:2)
(上传确实发生):(multer模块的导出名为upload
。如果您只想调用multer,请删除括号:const upload=require('multer'))
就像你在imageupload.js
中所做的那样。实际上,如果你想使用相同的上传程序,只需在这里导入imageupload.js
),我想要的是上传和显示帖子图像。我发现exports.upload=multer({storage:storage}).single('positmage')代码>(这是我应该修改的行吗?)在某些文档中:对不起,我的意思是说“没有名为upload
”的导出:)exports.upload=multer({storage:storage})。single('positmage')
可以。我已经编辑了我的答案。
exports.addPost = (req, res, next) => {
// removed the upload code
var form = {
titleholder: req.body.title,
excerptholder: req.body.excerpt,
bodyholder: req.body.body
};
...