这是我的职责
app.post("/pet", upload.single('file'), async (req, res, next) => {
if(!req.file) {
res.status(400).send('No file uploaded')
}
const blob = petAdoptionBucket.file(req.file.originalname)
const blobStream = blob.createWriteStream()
blobStream.on('error', err => {
next(err)
})
blobStream.on('finish', () => {
const publicUrl = format(
`https://storage.googleapis.com/${petAdoptionBucket.name}/${blob.name}`
);
res.status(200).send(publicUrl);
});
blobStream.end(req.file.buffer)
})
在功能工作和文件会出现在我的GCS桶,但我有一个500内部服务器错误称的路径名应该是一个对象,而不是一个字符串。 (关于在blobStrea.on publicUrl变量())
有人可以告诉我为什么?
下面是,我发现了错误
TypeError [ERR_INVALID_ARG_TYPE]: The "pathObject" argument must be of type object. Received type string ('https://storage.googleap...)
at _format (path.js:117:11)
at Pumpify.<anonymous> (/home/burslf/langages/NodeJS/pet-adoption/backend/server.js:156:23)
at Pumpify.emit (events.js:314:20)
at finishMaybe (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/@google-cloud/storage/node_modules/readable-stream/lib/_stream_writable.js:624:14)
at afterWrite (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/@google-cloud/storage/node_modules/readable-stream/lib/_stream_writable.js:470:3)
at onwrite (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/@google-cloud/storage/node_modules/readable-stream/lib/_stream_writable.js:461:7)
at Pumpify.WritableState.onwrite (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/@google-cloud/storage/node_modules/readable-stream/lib/_stream_writable.js:160:5)
at Object.onceWrapper (events.js:420:28)
at Pumpify.emit (events.js:314:20)
at Pumpify.Duplexify.uncork (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/@google-cloud/storage/node_modules/duplexify/index.js:79:50)
at Duplexify.<anonymous> (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/@google-cloud/storage/build/src/file.js:1404:20)
at Duplexify.emit (events.js:314:20)
at Upload.<anonymous> (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/@google-cloud/storage/build/src/file.js:2966:17)
at Upload.emit (events.js:326:22)
at finishMaybe (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/gcs-resumable-upload/node_modules/readable-stream/lib/_stream_writable.js:624:14)
at afterWrite (/home/burslf/langages/NodeJS/pet-adoption/backend/node_modules/gcs-resumable-upload/node_modules/readable-stream/lib/_stream_writable.js:470:3)
答案 0 :(得分:0)
找到了。 publicUrl 是 format() 所以它需要一个对象 而不是字符串
publicUrl = format(
`https://storage.googleapis.com/${petAdoptionBucket.name}/${blob.name}`
)
,我用过
publicUrl = format({
path: `https://storage.googleapis.com/${petAdoptionBucket.name}/${blob.name}`
})