时刻:Array.prototype.some 调用 null 或 undefined
moment: Array.prototype.some called on null or undefined
还是卡在下面的问题。我上周没有遇到问题,也没有更改任何代码:
我在这里使用 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 中的错误如下。如果我在上面的代码中删除了“ranges: ranges, // 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"
}
问题似乎来自 moment 2.13.0,它在 11 小时前发布。我假设您的日期选择器正在使用 moment 作为依赖项。
同时...这应该可以通过降级版本暂时解决您的问题。
npm uninstall moment
npm i moment@2.12.0
更新:我创建了一个问题来跟踪这个。
https://github.com/moment/moment/issues/3124
来自 Moment 团队:我们认为您在这里看到的问题是由于打包,2.13 之前版本的 Moment 对象被传递到 2.13 中的 moment 函数中。由于 2.13 中对内部变量的更改,事情无法正常工作。
目前,将 moment 降级到 2.12 将解决问题。
我们将与依赖于此的更受欢迎的库的一些作者交谈,看看我们能做些什么。我们将在 https://github.com/moment/moment/issues/3124 中跟踪进度,如其他答案中所述。
将 moment.js 更新到最新版本 2.24.0 为我解决了这个问题。它还解决了另一个问题,即我们看到的记录有空白的交货日期。更新到最新版本后那些空白记录不再出现
对于遇到此问题的其他人,我在尝试发出 HTTP 请求时遇到了此问题,该请求的 POST 正文是一个对象,其值是 Moment 的一个实例:
body = {
foo: moment()
}
未能正确序列化 moment() 实例,我通过转换为 ISO8601 字符串来解决:
body = {
foo: moment().toISOString()
}
还是卡在下面的问题。我上周没有遇到问题,也没有更改任何代码: 我在这里使用 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 中的错误如下。如果我在上面的代码中删除了“ranges: ranges, // 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"
}
问题似乎来自 moment 2.13.0,它在 11 小时前发布。我假设您的日期选择器正在使用 moment 作为依赖项。
同时...这应该可以通过降级版本暂时解决您的问题。
npm uninstall moment
npm i moment@2.12.0
更新:我创建了一个问题来跟踪这个。 https://github.com/moment/moment/issues/3124
来自 Moment 团队:我们认为您在这里看到的问题是由于打包,2.13 之前版本的 Moment 对象被传递到 2.13 中的 moment 函数中。由于 2.13 中对内部变量的更改,事情无法正常工作。
目前,将 moment 降级到 2.12 将解决问题。
我们将与依赖于此的更受欢迎的库的一些作者交谈,看看我们能做些什么。我们将在 https://github.com/moment/moment/issues/3124 中跟踪进度,如其他答案中所述。
将 moment.js 更新到最新版本 2.24.0 为我解决了这个问题。它还解决了另一个问题,即我们看到的记录有空白的交货日期。更新到最新版本后那些空白记录不再出现
对于遇到此问题的其他人,我在尝试发出 HTTP 请求时遇到了此问题,该请求的 POST 正文是一个对象,其值是 Moment 的一个实例:
body = {
foo: moment()
}
未能正确序列化 moment() 实例,我通过转换为 ISO8601 字符串来解决:
body = {
foo: moment().toISOString()
}