Вопрос:

момент: Array.prototype.some вызывается с нулевым или неопределенным

javascript backbone.js momentjs daterangepicker bootstrap-daterangepicker

2854 просмотра

4 ответа

2987 Репутация автора

Все еще застрял в следующей проблеме. У меня не было проблемы на прошлой неделе, и я не менял коды: я использую daterangepicker здесь: http://www.daterangepicker.com/#usage

Мои JS коды:

const Backbone = require('backbone');
const dutils = require('dutils');
const FilterGroupView = require('./filterGroupView');
const _ = require('underscore');
const $ = require('jquery');
const moment = require('bootstrap-daterangepicker/moment');
require('bootstrap-daterangepicker');

const ranges = {
  'Today': [moment().startOf('day'), moment()],
  'Yesterday': [moment().subtract(1, 'days').startOf('day'), moment().subtract(1, 'days').endOf('day')],
  'Last 7 Days': [moment().subtract(7, 'days'), moment()],
  'Last 30 Days': [moment().subtract(30, 'days'), moment()],
  'This Month': [moment().startOf('month'), moment().endOf('month')],
  'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
};

$('#dateForm').val(moment().subtract(7, 'days').format('YYYY-MM-DD HH:mm') + ' - ' + moment().format('YYYY-MM-DD HH:mm'));
console.log('ranges:' + JSON.stringify(ranges) ); // eslint-disable-line no-console
$('#dateForm').daterangepicker({
  format: 'YYYY-MM-DD HH:mm',
  minDate: new Date(2014, 0, 1),
  maxDate: new Date(),
  timePicker: true,
  timePickerIncrement: 30,
  showDropdowns: true,
  ranges: ranges, // Here
}, (start, end, label) => {
  $('#dateForm').val(start.format('YYYY-MM-DD HH:mm') + ' - ' + end.format('YYYY-MM-DD HH:mm'));
  if (label !== 'Custom Range') {
    this._relative_date = label;
  } else {
    this._relative_date = false;
  }
});

Войдите в console.log ниже:

analytics.bundle.js?v=v1.71:2 ranges:{"Today":["2016-04-18T04:00:00.000Z","2016-04-18T17:51:28.384Z"],"Yesterday":["2016-04-17T04:00:00.000Z","2016-04-18T03:59:59.999Z"],"Last 7 Days":["2016-04-11T17:51:28.385Z","2016-04-18T17:51:28.385Z"],"Last 30 Days":["2016-03-19T17:51:28.385Z","2016-04-18T17:51:28.385Z"],"This Month":["2016-04-01T04:00:00.000Z","2016-05-01T03:59:59.999Z"],"Last Month":["2016-03-01T05:00:00.000Z","2016-04-01T03:59:59.999Z"]}

Приведенный выше журнал показывает, что диапазоны в порядке. Ошибка в console.log заключается в следующем. Если в приведенном выше коде я удалил «range: range, // Here», ошибка исчезнет. Я не могу понять, почему.

Uncaught TypeError: Array.prototype.some called on null or undefined

Детали ошибки:

c   @   analytics.bundle.js?v=v1.71:16
Ue  @   analytics.bundle.js?v=v1.71:17
me  @   analytics.bundle.js?v=v1.71:17
n.setOptions    @   analytics.bundle.js?v=v1.71:16
n   @   analytics.bundle.js?v=v1.71:16
(anonymous function)    @   analytics.bundle.js?v=v1.71:16
vt.extend.each  @   commons.bundle.js?v=v1.71:14
vt.fn.vt.each   @   commons.bundle.js?v=v1.71:14
$.fn.daterangepicker    @   analytics.bundle.js?v=v1.71:16
t.exports.i.View.extend.initialize  @   analytics.bundle.js?v=v1.71:2
e.View  @   commons.bundle.js?v=v1.71:31
n   @   commons.bundle.js?v=v1.71:32
t.exports.i.View.extend.initialize  @   analytics.bundle.js?v=v1.71:1
e.View  @   commons.bundle.js?v=v1.71:31
n   @   commons.bundle.js?v=v1.71:32
(anonymous function)    @   analytics.bundle.js?v=v1.71:1
h   @   commons.bundle.js?v=v1.71:24
c.fireWith  @   commons.bundle.js?v=v1.71:24
vt.extend.ready @   commons.bundle.js?v=v1.71:24
c   @   commons.bundle.js?v=v1.71:14

часть package.json:

  "dependencies": {
    "backbone": "^1.2.0",
    "bootstrap": "^3.3.4",
    "bootstrap-daterangepicker": "git://github.com/dangrossman/bootstrap-daterangepicker.git#v1.3.21",
    "bootstrap-notify": "^3.1.3",
    "css-loader": "^0.12.1",
    "datatables": "git://github.com/DataTables/DataTables.git#1.10.7",
    "expose-loader": "^0.6.0",
    "extract-text-webpack-plugin": "^0.8.0",
    "file-loader": "^0.8.1",
    "html-loader": "^0.3.0",
    "imports-loader": "^0.6.3",
    "jquery": "^1.11.0",
    "jquery-ui": "^1.10.5",
    "style-loader": "^0.12.2",
    "underscore": "^1.8.3",
    "url-loader": "^0.5.5"
  }
Автор: BAE Источник Размещён: 18.04.2016 05:59

Ответы (4)


4 плюса

585 Репутация автора

Решение

Похоже, что проблема возникла с момента 2.13.0, который вышел 11 часов назад. Я предполагаю, что ваш выбор даты использует момент как зависимость.

А пока ... это должно временно решить вашу проблему путем понижения версии. npm uninstall moment npm i moment@2.12.0

Обновление: я создал проблему, чтобы отследить это. https://github.com/moment/moment/issues/3124

Автор: Greg Размещён: 18.04.2016 06:48

1 плюс

1784 Репутация автора

От команды Moment: Мы считаем, что проблема, которую вы видите здесь, заключается в том, что из-за упаковки объекты Moment из версий до 2.13 передаются в функции момента в 2.13. Из-за изменения внутренних переменных в 2.13 все работает неправильно.

На данный момент снижение рейтинга до 2.12 решит проблему.

Мы поговорим с некоторыми из авторов более популярных библиотек, которые зависят от этого, и посмотрим, что мы можем сделать. Мы будем отслеживать прогресс в https://github.com/moment/moment/issues/3124, как указано в другом ответе.

Автор: Maggie Pint Размещён: 19.04.2016 12:32

0 плюса

730 Репутация автора

Обновление moment.js до последней версии 2.24.0 решило эту проблему для меня. Также исправлена ​​другая проблема, когда нам показывали записи с пустыми датами доставки. Эти пустые записи перестали появляться после обновления до последней версии.

Автор: tovishalck Размещён: 25.03.2019 08:39

0 плюса

39 Репутация автора

Для других, кто сталкивался с этой проблемой, я столкнулся с этой проблемой при попытке сделать HTTP-запрос, чье тело POST было объектом со значением, которое было экземпляром Moment:

body = {
  foo: moment()
}

Он не смог сериализовать экземпляр moment () правильно, и я решил преобразовать его в строку ISO8601:

body = {
  foo: moment().toISOString()
}
Автор: mike Размещён: 13.06.2019 02:43
Вопросы из категории :
32x32