Javascript moment.isoWeekday不是函数

Javascript moment.isoWeekday不是函数,javascript,node.js,momentjs,httpserver,Javascript,Node.js,Momentjs,Httpserver,我使用的是codesandbox,同样的错误不断出现:u:502:bad gateway。从终端上看,这显然是因为moment.isoWeekday不是一个函数。为什么会这样 我已经看过了moment.js,我把它放在代码中的方式显然是正确的 var http = require("http"); var moment = require("moment"); moment().format(); function getDates() { var start = moment.utc("

我使用的是
codesandbox
,同样的错误不断出现:u:
502:bad gateway
。从终端上看,这显然是因为
moment.isoWeekday
不是一个函数。为什么会这样

我已经看过了
moment.js
,我把它放在代码中的方式显然是正确的

var http = require("http");
var moment = require("moment");
moment().format();

function getDates() {
  var start = moment.utc("1st Jan 2019");
  var end = moment.utc("31st December 2019");
  var dates = [];
  var current = start.clone();

  if (current !== moment.isoWeekday(1)) {
    current = moment().add(1, "w");
  }
  while (current.isBefore(end)) {
    current.clone.push(dates);
    current = moment.add(2, "w");
  }

  return dates;
}

http
  .createServer(function(req, res) {
    res.writeHead(200, { "Content-Type": "text/plain" });
    res.write("day,date", "\n");
    var dates = getDates();
    for (var i = 0; i < dates.length; i++) {
      res.write(moment.format("dddd, Do MMMM YYYY", dates[i]), "\n");
    }
    res.end();
  })
  .listen(8080);
var http=require(“http”);
var力矩=要求(“力矩”);
矩().format();
函数getDates(){
var开始=utc时刻(“2019年1月1日”);
var end=utc时刻(“2019年12月31日”);
var日期=[];
var current=start.clone();
if(当前!==时刻等工作日(1)){
电流=力矩()。加上(1,“w”);
}
while(当前.isBefore(结束)){
当前.克隆.推送(日期);
电流=力矩。加上(2,“w”);
}
返回日期;
}
http
.createServer(功能(请求、恢复){
res.writeHead(200,{“内容类型”:“文本/普通”});
res.write(“日期”、“日期”);
var dates=getDates();
对于(变量i=0;i

我正在做一项需要输出日期的任务。
isoWeekday
是代码的一部分,它应该检查当天是否不是
Monday
,然后在变量上添加一周,以便在下一周设置为
Monday

您的代码中有几个错误:

  • 您在
    时刻中忘记了
    ()
    之后的时刻。等工作日(1)
  • 矩.utc(“2019年1月1日”)
    的输出为空,因为矩无法识别格式,
    矩.utc(“2019年1月1日”、“2019年1月1日”、“Do MMM YYYY”)
    应按预期工作
  • 要将
    current
    的克隆推送到数组
    dates
    上,必须执行
    dates.push(current.clone())
    而不是
    current.clone.push(日期)
  • moment.format(“dddd,Do MMMM YYYY”,dates[i])
    不正确,您必须改为执行
    dates[i]。format(“dddd,Do MMMM YYYY”)
  • 工作示例:

    函数getDates(){ var start=时刻utc(“2019年1月1日”、“2012年1月1日”); var end=时刻utc(“2019年12月31日”、“2012年12月31日”); var日期=[]; var current=start.clone(); 如果(当前.isoWeekday()!==1){ //当前=当前。添加(1,“w”); const nextMonday=1+current.isoWeekday()+(7-current.isoWeekday()); 当前日期(下一个星期二); } while(当前.isBefore(结束)){ dates.push(current.clone()); 当前=当前。添加(2,“w”); } 返回日期; } 控制台日志(“日期、日期”); var dates=getDates(); 对于(变量i=0;i
    您必须在这样的时刻之后添加
    ()
    时刻().isoWeekday(1)
    Ohhh ok!非常感谢,我没注意到。我现在已经改变了这一点,我的预期结果仍然没有出现。你知道还有什么不对劲吗?感谢您的帮助。您能解释一下您在
    if
    while
    中想做什么吗?对于if语句:第一个输出值应该在2018年,这是不正确的。因此,我将“current”作为下一个
    Monday
    ,一个条件语句。while循环用于检查
    当前
    是否在
    结束
    之前。然后在循环内部,我想将
    当前
    的克隆推送到数组
    日期
    谢谢,这已经消除了我的一些困惑。然而,预期的结果仍然没有输出(我正在使用
    codesandbox
    ,不确定这是否会以任何方式影响它)。这可能是因为(var i=0;i的行
    ?我提供的示例是否为您输出了预期结果?不,没有。如果您有兴趣查看,请链接此处:仅输出标题codesandbox中的代码与我发布的代码不同,您使用了
    moment().utc
    ,但正确的是
    moment.utc
    ,您应该使用
    current.add(2,“w”)
    而不是
    moment().add(2,“w”),工作演示:哦,我明白了。现在正在输出日期,非常感谢。我把新行命令做错了吗?我认为为每个输出在新行上生成输出将是
    res.write(dates[I].format(“dddd,Do MMMM-YYYY),“\n”);
    ?而且我还认为我创建的
    if
    语句将在周一开始,并带有
    moment()。isoWeekday(1)