## 1. 现象
- 云函数本地调试正常,可以调用云存储;
- 上传到云后,报:`Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID b45e09c6-427b-4afc-a539-c82a8337b691, cloud function service error code -504002, error message Runtime.UserCodeSyntaxError: SyntaxError: Unexpected token '.'`错误,卡了快1天。
## 2. 环境及原因
- macos: Monterey
- 工具:Stable 1.06.2306020
- 源码中使用了`?.`
const cloud = require('wx-server-sdk');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
});
// 云函数入口函数
exports.main = async (event, context) => {
let { obj } = event
return obj?.a?.b
};
- 怀疑是node版本的问题,本地是18,但应该是用开发工具提供的版本;云开发默认版本是`node12.16`;
## 3. 解决办法
- 云开发控制台上,云函数,新建云函数,选择运行环境`node16.13`
- 开发者工具上,同步云函数列表,显示在控制台上新建的云函数
- 使用上面的源码,正常调用,通过!
谢谢大佬踩坑,把问号删了果然可以了。这踏马德是腾讯开发者工具的BUG,真难用,腾讯也不修一下。🌶🐧
写成文章吧,给你点个赞。有用。
一直对云函数里不能用可选链感到不解,原来是node的版本问题。