收藏
回答

云函数使用cloud.uploadFile时出错,怎么解决?

云函数在return使用cloud.uploadFile,准备把生成的文件上传到云存储,但是始终提示Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID 195ed62a-6ec9-11ec-b78e-5254005a5a71, cloud function service error code -504002, error message TypeErruploadFile:fail or: uploadFile:fail Cannot read property 'url' of undefined。

源代码如下:

云函数index.js

// 云函数入口文件
const cloud = require('wx-server-sdk')
const {
    createReport
} = require('docx-templates')
const fs = require('fs');
const path = require('path')
// const dayjs = require('dayjs')


cloud.init({
    env'cloud.DYNAMIC_CURRENT_ENV'
})



// 云函数入口函数
exports.main = async (event, context) => {
    const template = fs.readFileSync(path.join(__dirname, 'verify_company.docx'))//读取文件


    const buffer = await createReport({
        template,
        data: {
            //变量
            no'123',
            creator'Appleseed',
        },
        cmdDelimiter: ['{''}']//以{}作为变量分隔符
    })
            
    const dayjs = require('dayjs');
    const preDir = dayjs().format("YY/MM/DD");//日期
    const stringRandom = require('string-random')
    const randfilename = stringRandom(32)//随机文件名
    const cloudPath = `${preDir}${randfilename}.docx`//文件



    return await cloud.uploadFile({
        cloudPath,
        fileContent: Buffer.from(buffer, 'hex')
    })
    
}



考虑到可能是cloudPath的路径的问题,所以把上面cloudPath的修改成了如下:

const cloudPath = `7778-wxmltodocx-9gnoh53l4e4377ca-1309024106/test/${preDir}${randfilename}.docx`//文件


上面的7778-wxmltodocx-9gnoh53l4e4377ca-1309024106/test/为我的云存储的路径。

但是各种调试都不能解决,系统提示的问题依然一样,请各位老师指点,感谢!

1月7日经老师指点,将cloudPath修改为了固定值,代码如下:

// const dayjs = require('dayjs');
    // const preDir = dayjs().format("YY/MM/DD");//日期
    // const stringRandom = require('string-random')
    // const randfilename = stringRandom(32)//随机文件名
    // // const cloudPath = `7778-wxmltodocx-9gnoh53l4e4377ca-1309024106/test/${preDir}${randfilename}.docx`//文件
    // const cloudPath = preDir+randfilename+'.docx'//文件
//上面这一段代码都注释了不用,直接指定一个导出的文件名。return await cloud.uploadFile({
        cloudPath: 'test1.docx',
        fileContent: Buffer.from(buffer, 'hex')
    })


但是依然报的是同样的错误问题,还请各位老师指点!感谢!!!!

最后一次编辑于  2022-01-07
回答关注问题邀请回答
收藏

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2022-01-08

    2022-01-08
    有用 1
    回复 3
    • 万垒之鹰
      万垒之鹰
      发表于移动端
      2022-01-08
      感谢!搞定了!这个问题我今天上午自己找到了,但是有个疑问,我用的这个环境名文档里面说的是默认环境,而且我的云环境本来就只有一个啊,为什么不行哎?
      2022-01-08
      回复
    • Mr.Zhao
      Mr.Zhao
      2022-01-08回复万垒之鹰
      这玩意是个变量,你写成字符串,把单引号去掉就行了
      2022-01-08
      1
      回复
    • 万垒之鹰
      万垒之鹰
      发表于移动端
      2022-01-08回复Mr.Zhao
      忽略了😂
      2022-01-08
      回复
  • 老张
    老张
    2022-01-06

    1、写死cloudPath试一下。

    2022-01-06
    有用 1
    回复 1
    • 万垒之鹰
      万垒之鹰
      2022-01-07
      还是不行。。。。。,,我把代码调整了一哈,麻烦你看看,谢谢!
      我也姓张,跟张老师是家门,还请赐教!!!!
      2022-01-07
      回复
登录 后发表内容