微信小程序云端函数class的方法需注意形式

我随便写了下面的类

class MyDate{
  constructor(dateStr) {
    var arr = dateStr.split(' ');
    var dateArr = arr[0].split('-');
    this.year = parseInt(dateArr[0]);
    this.month = parseInt(dateArr[1]); 
    this.day = parseInt(dateArr[2]);
    if(arr.length>1){
      var tarr = arr[1].split(':');
      this.hour = parseInt(tarr[0]);
      this.minute = parseInt(tarr[1]);
      this.sec = 0;
      if(tarr.length>2){
        this.sec = parseInt(tarr[2]);
      }    
    }
  }
  getDateTime=function() {
    return new Date(this.year,this.month-1,this.day,this.hour,this.minute,this.sec);
  }
  getDate=function() {
    return new Date(this.year,this.month-1,this.day);
  }
  getDateNumber=function() {
    return Date.parse(this.getDate());
  }  
}

本地调试的时候没有问题,但放在正式环境就报错:

调用失败 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID

云端测试报:{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"Unexpected token ="}

其实就是没有发布好,node的v.8.9估计是认为上面的js语法里有错误。而我本地的node是10.15版。解决也很简单,方法的定义改为以下的样子就好了:

//....
  getDateTime() {
    return new Date(this.year,this.month-1,this.day,this.hour,this.minute,this.sec);
  }
  getDate() {
    return new Date(this.year,this.month-1,this.day);
  }
  getDateNumber() {
    return Date.parse(this.getDate());
  }  
//....

看来还是自己多此一举呀,浪费了一个晚上的时间。

原文地址:https://www.cnblogs.com/kevin-Y/p/12608714.html