图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义
Posted
技术标签:
【中文标题】图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义【英文标题】:Image Upload Error: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined 【发布时间】:2021-01-22 19:36:01 【问题描述】:我正在尝试使用邮递员将图像上传到 Firebase。随着firebase serve
的运行,我向我的路由发送了一个发布请求以及授权标头和图像文件,但在控制台中收到以下错误:
TypeError [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'
【问题讨论】:
请编辑问题以显示完整的错误,并确保指出是哪一行代码导致了它。您在需要字符串的地方传递 undefined。 【参考方案1】:问题是您在upload()
的参数中输入了imageToBeUploaded.filpath
,但您的本意是输入imageToBeUploaded.filepath
。缺少一个“e”,这使得整个表达式未定义。
【讨论】:
谢谢!修复了它:)以上是关于图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义的主要内容,如果未能解决你的问题,请参考以下文章
ref 不是函数,firebase 存储图片上传,reactJS
当我点击上传按钮时,它给出了一个错误:`TypeError: Cannot read property 'name' of null`
TypeError:尝试上传图像时无法读取未定义的属性“路径”