- 云函数中调用fs.readFileSync的问题?
我在云函数中调用fs.readFileSync想读取一个在云存储中的文件,但是发现fs.readFileSync好像只能读取在云函数文件夹中的文件,不能读取在云存储中的文件,但是我查询了fs.readFileSync官方文档,里面说路径可以是URL,我尝试了各种方法传入URL,要么提示“TypeError [ERR_INVALID_URL_SCHEME]: The URL must be of scheme file”,或者“Error: ENOENT: no such file or directory, open 'https://7778-wxmltodocx-9gnoh53l4e4377ca-1309024106.tcb.qcloud.la/20220112/74gf2CAw6dBH8Kn4kSGswuQw1UPLYPCR.docx'”,代码如下,请各位高手老师指点!!!感谢!!!! const cloud = require('wx-server-sdk') const { createReport } = require('docx-templates') const fs = require('fs') const path = require('path') const dayjs = require('dayjs') const url = require('url') cloud.init({ env: 'wxmltodocx-9gnoh53l4e4377ca' }) // 云函数入口函数 exports.main = async (event, context) => { console.log(event) //读取本地传入的云函数ID,并将其转换成一个临时的URL const fileList = [event.downloadFileID] const result = await cloud.getTempFileURL({ fileList: fileList, }) console.log('换取临时文件网络地址是:',result.fileList[0].tempFileURL) const myURL = new URL(result.fileList[0].tempFileURL) console.log('转换后的文件网络地址是:',myURL) const myPath = myURL.toString() const template = fs.readFileSync(myPath)//读取文件 执行到这一步就反复出错了。 请各位老师指点。谢谢!
2022-01-12 - cloud.uploadFile()始终失败?
照搬照抄云开发文档里的示例,运行后始终失败,一直都是返回如下错误代码 [error] 函数执行失败(耗时 178ms) TypeErruploadFile:fail or: uploadFile:fail Cannot read property 'url' of undefined ??急人,请老师指点 // 云函数入口文件 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 fileStream = fs.createReadStream(path.join(__dirname, 'verify_company.docx')) return await cloud.uploadFile({ cloudPath: 'verify_company.docx', fileContent: fileStream, }) }
2022-01-07 - 云函数使用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-06 - 调用云函数显示-404011 cloud function execution error?
在调用云函数时显示Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID 5269cea3-6ea2-11ec-922d-525400868f7d, cloud function service error code -504002, error message Runtime.ImportModuleError: Error: Cannot find module 'docxtemplates' Require stack: - /var/user/index.js - /var/runtime/node12/UserFunction.js - /var/runtime/node12/Runtime.engine.js - /var/runtime/node12/bootstrap.js at Object.module.exports.load (:39520/var/runtime/node12/UserFunction.js:34) at Runtime.handleOnce (:39520/var/runtime/node12/Runtime.engine.js:99) at Timeout._onTimeout (:39520/var/runtime/node12/Runtime.engine.js:56) at listOnTimeout (:39520/appservice/internal/timers.js:549) at processTimers (:39520/appservice/internal/timers.js:492); at cloud.callFunction api; at new t (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:17) at u (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:17) at l (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:17) at Function.success (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:17) at d (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:2) at WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:2 at f (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:26) at Function.<anonymous> (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:26) at d (WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:2) at WASubContext.js?t=wechat&s=1641432266952&v=2.14.1:2(env: Windows,mp,1.05.2111300; lib: 2.14.1) 云函数的入口文件和本地的JS应该都没有问题,云函数环境也输入了的,就是解决不了?请各位指点哈,感谢! 附代码如下: 云函数: / 云函数入口文件 const cloud = require('wx-server-sdk') const { createReport } = require('docxtemplates') const fs = require('fs'); const path = require('path') 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('../../extend/dayjs'); const preDir = dayjs().format("YY/MM/DD");//日期 const stringRandom = require('string-random') const randfilename = stringRandom(32)//随机文件名 const cloudPath = `verify/docx/${preDir}/${randfilename}.docx`//文件 return await cloud.uploadFile({ cloudPath, fileContent: Buffer.from(buffer, 'hex') }) } 本地的调用页面js文件: testdocx(){ wx.cloud.callFunction({ // 云函数名称 name: 'testdocx', // 传给云函数的参数 data: { }, }) .then(res => { console.log(res.result) }) .catch(console.error) }, 本地的app.js文件 App({ onLaunch: function () { if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力'); } else { wx.cloud.init({ // env 参数说明: // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源 // 此处请填入环境 ID, 环境 ID 可打开云控制台查看 // 如不填则使用默认环境(第一个创建的环境) env: 'wxmltodocx-9gnoh53l4e4377ca', traceUser: true, }); } this.globalData = {}; } });
2022-01-06 - 云函数本地调试开启失败,云函数调用失败?确实找不到原因,请赐教!
[图片] [图片] 云函数本地调试开启失败,云函数调用失败,均显示问题是:Cannot access 'cloud' before initialization。云函数部署配置和上传均正常, [图片] [图片] 我试了各种方法,都没有解决,实在没有办法了,请各位赐教
2021-12-30