Javascript Express.js应用程序错误导致Route.post()需要回调函数,但出现[object Undefined]错误

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

我正在使用、和MongoDB开发一个(单击链接查看GitHub回购)

我正在尝试使用Multer引入一个添加后期图像功能。由于我是个新手,所以我遇到了麻烦

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
    };
    ...