云端Node版本16.51.1但是在uni-app中不支持js的??运算符
云端Node版本16.51.1但是在uni-app中不支持js的??运算符
操作步骤:
见说明
预期结果:
见说明
实际结果:
见说明
bug描述:
本地node版本是18.20.0,云端node版本是16.15.1
调试时都没问题,发布到线上就报错
```javascript
SyntaxError: Unexpected token ?
排查后才发现是
let a = b ?? '默认值'
这类语法中的 ?? 在云端环境不支持
但是查了下相关资料,node14版本就支持了,云端node都16了
那为什么unicloud的云端node版本不支持呢?

更多关于云端Node版本16.51.1但是在uni-app中不支持js的??运算符的实战教程也可以访问 https://www.itying.com/category-93-b0.html
哪个云厂商??? 运算符是支持的。贴下错误堆栈看下具体位置是这里吗?
更多关于云端Node版本16.51.1但是在uni-app中不支持js的??运算符的实战教程也可以访问 https://www.itying.com/category-93-b0.html
阿里云,就是这里报错,后来把 ?? 改成 || 就可以了
回复 试试试试: 阿里云node环境没有问题,你可以单独写一个函数试下。
经过测试:是云端数据库触发器报错
测试步骤: 在数据库触发器的beforeRead中,执行下图中带 ?? 的语法
然后就会报错
errCode: “SYSTEM_ERROR”
errMsg: “Unexpected token ?”
clientDB日志也有记录(涂抹部分是项目文件名)
然后只要把 ?? 改成 || 就能正确执行了
let a
let b = a || ‘默认值’
return b
clientdb 云函数node版本太低导致的,这个问题我们修复一下
回复 DCloud_uniCloud_CRL: https://ask.dcloud.net.cn/question/172206 这个问题现在修复了吗? 数据库使用中文字段,目前兼容性都很好,除了这一个单表查询排序不支持
回复 试试试试: 建议使用英文
回复 DCloud_uniCloud_CRL: 因为目前中文大多数场景兼容都没问题,就这一个bug,单表不能排序,联表就能排序。 要是完全不兼容,甲方如果要求数据库中文字段,直接就拒了都不用废话;但现在就这么一个bug,这个项目是接还是不接…
回复 试试试试: 可以试下原生的查询语句
回复 DCloud_uniCloud_CRL: 能修复就尽量修复一下吧,毕竟现在国产化都是趋势,虽然英文还是主流,但中文需求也会越来越多的。换句话说,接项目打广告的时候,加一个支持中文,都能在国内内卷的外包圈打出一个新的卖点
这是UniCloud云函数运行环境与Node.js版本兼容性问题。UniCloud云函数虽然基于Node.js 16.15.1,但实际运行时使用的是更严格的JavaScript引擎配置。
解决方案:
- 改用兼容性更好的语法:
let a = typeof b !== 'undefined' ? b : '默认值'
- 或配置babel转译: 在云函数目录下添加babel.config.js:
module.exports = {
presets: [
['[@babel](/user/babel)/preset-env', {
targets: {
node: '12'
}
}]
]
}
- 安装必要依赖:
npm install --save-dev [@babel](/user/babel)/core [@babel](/user/babel)/preset-env