Nodejs + Google-Cloud-Storage – 无法读取未定义的属性存储

我试图通过导航到/上传路线以用户身份上传图像。 使用Muller和谷歌云存储

但是,我不能访问函数sendUploadToGCS中的存储对象,它返回undefined。

为什么会这样,我只能认为它可能与使用它作为一个中间件有关,如果这种情况是可能达到相同的,而不使用中间件的multer和gcs,我更喜欢简单的asynchronous/承诺。

app.js

let multer = require('multer'); let m = multer({ storage: multer.MemoryStorage, }); let GoogleCloudStorage = require('./modules/google/google-cloud-storage'); let storage = new GoogleCloudStorage(); app.use('/upload', m.single('avatar'), storage.sendUploadToGCS, (req, res) => { console.log(req.file); return res.json('1'); }); 

谷歌云,storage.js

 let Config = require('../../config/app'); let Storage = require('@google-cloud/storage'); class GoogleCloudStorage { constructor() { this.bucketName = Config.filesystem.google.bucket; this.storage = new Storage({ projectId: Config.filesystem.google.projectId, keyFilename: Config.filesystem.google.service_account_key, }); } sendUploadToGCS(req, res, next) { console.log(this.storage); // if (!req.file) { // return next(); // } // const gcsname = Date.now() + req.file.originalname; // const file = this.storage.bucket(this.bucketName).file(gcsname); // const stream = file.createWriteStream({ // metadata: { // contentType: req.file.mimetype, // }, // }); // stream.on('error', (err) => { // req.file.cloudStorageError = err; // next(err); // }); // stream.on('finish', () => { // req.file.cloudStorageObject = gcsname; // file.makePublic().then(() => { // req.file.cloudStoragePublicUrl = getPublicUrl(gcsname); // next(); // }); // }); // stream.end(req.file.buffer); } } module.exports = GoogleCloudStorage;