繁体   English   中英

图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。 接收类型未定义

[英]Image Upload Error: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined

我正在尝试使用邮递员将图像上传到 firebase。 随着firebase serve运行,我向我的路由发送了一个 post 请求以及 Authorization 标头和图像文件,但在控制台中收到以下错误:

类型错误 [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。 接收类型未定义

 exports.uploadImage = (req, res) => { const BusBoy = require('busboy') const path = require('path') const os = require('os') const fs = require('fs') const busboy = new BusBoy({ headers: req.headers }) let imageFileName let imageToBeUploaded = {} busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { console.log(fieldname, filename, encoding, mimetype) if (mimetype !== 'image/jpeg' && mimetype !== 'image/png') { return res.status(400).json({ error: '❌ Wrong file type submitted' }) } const imageExtension = filename.split('.')[filename.split('.').length - 1] imageFileName = `${Math.round( Math.random() * 1000000000000 )}.${imageExtension}` const filepath = path.join(os.tmpdir(), imageFileName) imageToBeUploaded = { filepath, mimetype } file.pipe(fs.createWriteStream(filepath)) }) busboy.on('finish', () => { admin .storage() .bucket(config.storageBucket) .upload(imageToBeUploaded.filpath, { resumable: false, metadata: { metadata: { contentType: imageToBeUploaded.mimetype, }, }, }) .then(() => { const imageUrl = `https://firebasestorage.googleapis.com/v0/b/${config.storageBucket}/o/${imageFileName}?alt=media` return db.doc(`/users/${req.user.handle}`).update({ imageUrl }) }) .then(() => { return res.json({ message: '✅ Image uploaded successfully' }) }) .catch((err) => { console.error(err) return res.status(500).json({ error: err.code }) }) }) busboy.end(req.rawBody) }

完整的错误信息:

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
     at validateString (internal/validators.js:112:11)
     at Object.basename (path.js:1157:5)
     at Bucket.upload (/Users/apple/Code/litter/litter-functions/functions/node_modules/@google-cloud/storage/build/src/bucket.js:2493:38)
     at /Users/apple/Code/litter/litter-functions/functions/node_modules/@google-cloud/promisify/build/src/index.js:69:28
     at new Promise (<anonymous>)
     at Bucket.wrapper (/Users/apple/Code/litter/litter-functions/functions/node_modules/@google-cloud/promisify/build/src/index.js:54:16)
     at Busboy.<anonymous> (/Users/apple/Code/litter/litter-functions/functions/handlers/users.js:133:8)
     at Busboy.emit (events.js:210:5)
     at Busboy.emit (/Users/apple/Code/litter/litter-functions/functions/node_modules/busboy/lib/main.js:37:33)
     at /Users/apple/Code/litter/litter-functions/functions/node_modules/busboy/lib/types/multipart.js:52:13 {    code: 'ERR_INVALID_ARG_TYPE'  }

问题是您在upload()的参数中输入了imageToBeUploaded.filpath ,但您打算输入imageToBeUploaded.filepath 缺少一个“e”,这使得整个表达式未定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM