Javascript 用require传递函数
我想用require传递函数。代码如下: multerModule.jsJavascript 用require传递函数,javascript,require,module.exports,Javascript,Require,Module.exports,我想用require传递函数。代码如下: multerModule.js const path = require('path'); const multer = require('multer'); const crypto = require('crypto'); const GridFsStorage = require('multer-gridfs-storage'); // Create storage engine const initStorage = (conn, bucket
const path = require('path');
const multer = require('multer');
const crypto = require('crypto');
const GridFsStorage = require('multer-gridfs-storage');
// Create storage engine
const initStorage = (conn, bucketName) => new GridFsStorage({
db: conn,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: bucketName
};
resolve(fileInfo);
});
});
}
});
const initUpload = (storage) => multer({
storage: storage,
fileFilter: function (req, file, callback) {
const ext = path.extname(file.originalname);
if (ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') {
return callback(new Error('Only images are allowed'))
}
callback(null, true)
}
});
module.exports = { initStorage, initUpload };
offers.js
const router = require('express').Router();
const auth = require('../../middleware/auth');
const mongoose = require('mongoose');
const Grid = require('gridfs-stream');
const collectionName = 'offers';
const bucketName = 'offers';
const { initStorage, initUpload } = require('../../modules/multerModule');
const conn = mongoose.connection;
Grid.mongo = mongoose.mongo;
// Init gfs
let gfs;
conn.once('open', () => {
// Init stream
gfs = Grid(conn.db);
gfs.collection(collectionName);
});
const storage = initStorage(conn, bucketName);
const upload = initUpload(storage);
我得到了TypeError:存储不是一个函数
我想我可以这样写(如果我错了请纠正我):
,但这不是通过模块箭头函数之前定义的第一种方法吗?现在,您的
storage
变量包含new GridFsStorage
解析为的类型newx
通常解析为某个对象的实例,而不是普通函数。实例通常都有方法,但是一个实例在它自己的组中几乎从来都不是一个函数,对于这个主题我很抱歉,我只是将名称storage改为initStorage,并将upload改为initUpload,但忘记了保存。然而,这种方法工作得很好,但让它在这里,也许有人谁会有一个问题,这可以找到这个解决方案的帮助。我在这里也得到很多帮助。
module.exports = {
function1: function(params) {//do something},
function2: function(nextparams){//do something}
}