Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express中间件(multer)在单独的文件中_Javascript_Node.js_Express - Fatal编程技术网

Javascript Express中间件(multer)在单独的文件中

Javascript Express中间件(multer)在单独的文件中,javascript,node.js,express,Javascript,Node.js,Express,我能够将一个非常简单的中间件(isAuthenticated)移到一个外部中间件文件中,但是我很难将我的multer上传移到上面。我刚刚学会了如何将它们移动到不同的文件中,所以可能是obvius routes/index.js var middleware = require('../middleware/common'); var isAuthenticated = middleware.isAuthenticated; var upload = middleware.multerSetup;

我能够将一个非常简单的中间件(isAuthenticated)移到一个外部中间件文件中,但是我很难将我的multer上传移到上面。我刚刚学会了如何将它们移动到不同的文件中,所以可能是obvius

routes/index.js
var middleware = require('../middleware/common');
var isAuthenticated = middleware.isAuthenticated;
var upload = middleware.multerSetup;
...

router.post('/updateuser',
    upload,
...,
    function (req, res, next) {
        res.redirect('/dashboard');
    }
);
--

错误:

routes\index.js:108
    upload.single('upl'), 
           ^

TypeError: upload.single is not a function
    at Object.<anonymous> (C:\Users\Tyler\WebstormProjects\volunteer\volunteerApp\routes\index.js:108:12)
routes\index.js:108
upload.single('upl'),
^
类型错误:upload.single不是一个函数
反对。(C:\Users\Tyler\WebstormProjects\Organizer\OrganizerApp\routes\index.js:108:12)

您的multer中间件设置错误。您的
Middleware.multerSetup
是一个中间件函数,然后调用
upload.single
来设置multer(然后再也不调用它,请求保持挂起状态)。将multer upload设置移到自定义中间件之外,让您的模块仅从
upload.single
导出返回函数

例如:

Middleware = {
   ...
   multerSetup: upload.single('upl')
   ...
}

明白了!只需要在routes/index.js中将upload定义为一个函数

var upload = middleware.multerSetup();

您遇到了什么错误或问题?我知道每个人都主张使用不同的文件来做每件小事。我允许我的文件树慢慢扩展,这样我在每个文件中都有足够的内容可以工作,但不会太多以至于变得凌乱。您不需要将multer上载设置移动到单独的文件中。只需将它移到同一文件中的自定义中间件功能之外。
var upload = middleware.multerSetup();