Parse platform 使用力矩模块时出现问题

Parse platform 使用力矩模块时出现问题,parse-platform,Parse Platform,以下是一些我遇到问题的解析云代码: var moment = require('moment'); Parse.Cloud.define ("myCloudFunction", function(request, response) { var now = moment(); var later = moment("2017-07-09T20:00:00"); var x = 7; if (later.isAfter(now)) x = x-1; el

以下是一些我遇到问题的解析云代码:

var moment = require('moment');

Parse.Cloud.define
("myCloudFunction", function(request, response)
 {
    var now = moment();
    var later = moment("2017-07-09T20:00:00");
    var x = 7;
    if (later.isAfter(now)) x = x-1;
    else x = x+1;
    console.log(x);
 });
我在运行时收到以下错误消息:

Error: TypeError: Object Sun Jul 09 2017 20:00:00 GMT+0000 (UTC) has no method 'isAfter' at main.js:406:12 (Code: 141, Version: 1.2.18)
当然,我已经简化了问题的要点


我做错了什么?

var moment=require('moment')
需要在函数之外,因为它定义了整个文件的需求。我通常把我所有的
require
语句放在文件的顶部

因此,上面的代码应该如下所示:

var moment = require('moment');

Parse.Cloud.define
("myCloudFunction", function(request, response)
 {
    var now = moment();
    var later = moment("2017-07-09T20:00:00");
    var x = 7;
    if (later.isAfter(now)) x = x-1;
    else x = x+1;
    console.log(x);
 });
var moment = require('cloud/moment.js');

云代码使用的momente.js文件的托管版本停留在1.7.2版本,而isAfter方法是2.0+

下载moment.js的新副本,并将其放入您的云/文件夹中,然后像这样要求它:

var moment = require('moment');

Parse.Cloud.define
("myCloudFunction", function(request, response)
 {
    var now = moment();
    var later = moment("2017-07-09T20:00:00");
    var x = 7;
    if (later.isAfter(now)) x = x-1;
    else x = x+1;
    console.log(x);
 });
var moment = require('cloud/moment.js');

似乎有些函数甚至在parse支持的本机momente.js中也不起作用(momentv1.7.2)。。。使用添加功能时,它不起作用。。。仅当使用我下载的moment(2.8.4)版本时

请参见以下代码:

var moment = require('moment');
var moment2 = require('cloud/moment.js');

Parse.Cloud.define ("momentChecks", function(request, response)
{
    var later =   moment("2017-07-09T20:00:00");
    var later2 =  moment("2017-07-09T20:00:00");
    var later3 = moment2("2017-07-09T20:00:00");

     later.add(1, 'days').format("dddd, MMMM Do YYYY, h:mm:ss a");
    later2.add(2, 'days').format("dddd, MMMM Do YYYY, h:mm:ss a");
    later3.add(2, 'days').format("dddd, MMMM Do YYYY, h:mm:ss a");

    var message = "\nlater: " + later.format() + "\nlater2: " + later2.format() + "\nlater3: " + later3.format();
    console.log(message);
    response.success(message);
});

将行(var moment=require('moment');)放在函数之外(文件顶部与否),没有任何区别。我仍然看到完全相同的错误消息。我建议在函数中保留require,当且仅当它仅限于该函数时。原因是,它将在部署和其他函数调用期间被获取/加载/解析。@Fosco您能解释一下在
时刻
调用
isAfter()
不起作用的原因吗?我想知道它是否链接到JSSDK的版本?我们在Parse上托管的MomentJS的版本是1.7.2。这些方法都是2.0+@Fosco。这一点在文档中很值得一提,因为给出的API链接显示了哪些版本的方法是inI打开了一个错误案例,答案是,在moment.js 1.7.2中,顺序似乎有所不同。现在应该是:later2.add('days',2)