使用Moment模块时遇到问题

时间:2014-07-09 00:01:20

标签: parse-platform

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

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)

当然,我已经简化了我的问题。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

Cloud Code使用的托管版本的moment.js文件停留在版本1.7.2,而isAfter方法是2.0 +。

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

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

答案 1 :(得分:0)

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);
 });

答案 2 :(得分:0)

似乎有些功能即使在本机时刻也无法工作。解析支持的时刻(时刻v1.7.2)...使用添加功能时它不起作用...仅在使用我的下载时时刻版(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);
});