5

在我的 OS X 10.7.3 (Lion) 笔记本电脑上,我无法使用 Date 构造函数使用 Qt WebKit 解析 JavaScript 日期字符串。使用 jasmine-headless-webkit 或 phantomJS,所有调用都像:

new Date("2012-04-10")

总是回来

"Invalid Date"

而不是有效的 Date 对象。几周前,一切正常,我已经在六台具有类似设置的计算机上进行了检查,并且无法在其他任何地方重现该问题。

我相当肯定,当我决定清理旧的据称未使用的 MacPorts 安装时,问题就开始了(我早就改用 Homebrew 并且正在做一些房屋清洁工作)。我怀疑有一个动态链接库已从我的系统中删除,Qt 将其用于日期解析。

有谁知道这个日期解析库可能被称为什么?知道我是否可以使用 Homebrew 安装它或以某种方式手动修复丢失的依赖项?

我尝试重新安装 Qt 和许多其他库,但没有解决问题。

4

4 回答 4

2

我没有 Mac,但考虑到 Windows 的类似情况,我会使用可以报告应用程序依赖项信息的程序,例如 Dependency Walker。快速搜索表明该程序可能对 Mac 世界有所帮助。

于 2012-04-11T01:46:32.730 回答
1

好的,我用 jasmine-headless-webkit 解决了日期解析的问题。不幸的是,我对此不够科学,所以我不确定是什么修复了它。可能是以下部分或全部过程:

  1. 从 /Library/Frameworks/Qt* 和自制软件(/usr/local/Qt* 和 /usr/local/Cellar/qt*)中删除所有 Qt 痕迹
  2. 从http://qt.nokia.com/downloads/重新安装 Qt 库(库,而不是顶部的 SDK)
  3. 通过“brew update”更新自制软件
  4. 冲泡安装qt

此外,我安装了 Qt SDK 和 XCode 4.3,但我认为这并没有解决它,因为我的同事没有安装这些东西,也没有遇到和我一样的问题。

这可能与 MacPorts 无关,但可能与我的旧 Qt 4.7 安装有关。我现在正在运行 Qt 4.8。

对不起所有的噪音!也许这个信息会帮助别人。

于 2012-04-11T18:26:52.567 回答
0

我有这个错误,我假设与 QtWebKit 有关,但是在使用 wicked_pdf 时。很难找出跨操作系统对 wkhtmltopdf 和 qtwebkit 的依赖关系(我在 dev 中运行 OSX,有时在 dev 中运行 Ubuntu,我们部署到 Heroku,但可能很快会部署到其他平台),所以我也使用了一种解决方法。我使用 moment.js 新建一个 Date 对象,一切正常。我还没有时间深入了解它是如何工作的,但我的猜测是,moment.js 通过测试浏览器支持将“YYYY-MM-DD”转换为日期对象很聪明。

当您不想关心您的代码在哪个操作系统中运行并且可以负担得起包含 moment.js 库时,这实际上是一个非常好的解决方法。这样您就不必关心运行的是哪个 WebKit。

于 2014-12-16T18:20:29.397 回答
0

根据问题 187“PhantomJS 似乎在 ISO8601 日期格式上中断”,看起来这个 bug 将在 v1.8 中修复:

http://code.google.com/p/phantomjs/issues/detail?id=187

同时,该错误报告的解决方法是将“T00:00:00Z”附加到您的日期。

于 2012-10-11T22:46:20.477 回答