2012-04-11 4 views
5

내 OS X 10.7.3 (Lion) 랩톱에서 Date 생성자를 사용하여 Qt WebKit으로 JavaScript 날짜 문자열을 구문 분석 할 수 없습니다. 자스민 - 헤드리스 (headless) - 웹킷 또는 phantomJS 중 하나를 사용하여 모든 통화 좋아 : 새로운 날짜 ("YYYY-MM-DD")가 MacPorts를 제거한 후 Qt WebKit에서 작동하지 않습니다.

new Date("2012-04-10") 

항상 대신 유효한 Date 객체의

"Invalid Date" 

을 반환합니다. 몇 주 전, 모든 것이 잘 작동하고 있었고, 비슷한 설정으로 6 대의 컴퓨터에서 이것을 검사했고 다른 곳에서는 문제를 재현 할 수 없었습니다.

오래 전부터 사용하지 않았던 MacPorts 설치를 정리하기로 결정했을 때 문제가 발생했다는 것을 확신합니다. (오래 전 홈브류로 전환했으며 집 청소를하고있었습니다.) 필자는 Qt에서 날짜 분석을 위해 사용하는 시스템에서 제거 된 동적 링크 라이브러리가 있다고 생각합니다.

누구든지이 날짜 구문 분석 라이브러리를 호출 할 수있는 아이디어가 있습니까? 어떤 생각을 내가 Homebrew와 함께 설치하거나, ​​어떻게 든 수동으로 누락 된 의존성을 고칠 수 있다면?

Qt 및 다른 많은 라이브러리를 다시 설치하려고했지만 아무 것도 문제를 해결하지 못했습니다.

+0

업데이트 :이 문제는 phantomJS에서 결코 작동하지 않았을 것입니다. 문제는 jasmine-headless-webkit에 국한되어 있습니다. jasmine이 동료를 위해 QtWebkit에서 실행되지 않을 수도 있습니다. Node.js 또는 다른 것을 사용하고있을 수도 있습니다. 나는 계속 조사 할 것이다. 이 질문은 유효하지 않을 수도 있지만 더 많이 알기 전까지는 그대로 두겠습니다. –

답변

2

Mac을 가지고 있지는 않지만 Windows와 비슷한 상황이 나면 Dependency Walker와 같은 응용 프로그램의 종속성에 대한 정보를보고 할 수있는 프로그램을 사용합니다. 빠른 검색은 this program가 Mac 세계에서 도움이 될 수 있다고 제안했습니다.

+0

고마워요! /Library/Frameworks/QtWebKit.framework/Versions/Current/QtWebKit을 열면 많은 흥미로운 정보를 볼 수 있습니다. 그러나 많은 의존성이 있으며 근본적인 원인 문제를 아직 파악하지 못했기 때문에이 답변을 표시 할 수 없습니다 (upvote를 제공했습니다). –

1

좋아, 나는 jasmine-headless-webkit으로 날짜 분석 문제를 해결했다. 불행하게도, 나는 그것에 대해 충분히 과학적이지 않았기 때문에, 나는 그것을 고쳐 놓은 것이 확실하지 않다. *

  1. /라이브러리/프레임 워크/Qt는 *와 사제 (/ usr/지방/Qt를 * 및/usr/지방/셀라/QT에서 Qt는의 모든 흔적을 제거 : 그것은 아마 다음과 같은 프로세스의 일부 또는 전부를했습니다)
  2. 양조 설치 "양조 업데이트"를 통해 http://qt.nokia.com/downloads/에서 Qt는 라이브러리 (라이브러리, 상단이 아닌 SDK)
  3. 업데이트 사제를 다시 설치 또한

QT 내가 설치 한 Qt는 SDK 및 XCode 4.3,하지만 나는 생각하지 않는다. 내 직장 동료들이 이런 것들을 설치하지 않았고 나 같은 문제가 없었기 때문에 문제가 해결되었습니다.

이것은 MacPorts와 관련이 없지만 이전 Qt 4.7 설치와 관련이있을 수 있습니다. 현재 Qt 4.8을 사용 중입니다.

죄송합니다. 어쩌면이 정보가 다른 사람을 도울 것입니다.

0

이 버그는, V1.8에서 수정 될 예정이다 187 발행에 따른 "PhantomJS하는 ISO8601 날짜 형식을 깰 것으로 보인다"것 같습니다 : 한편

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

에서 해결 그 버그 보고서는 당신의 날짜에 "T00 : 00 : 00Z"을 추가하는 것입니다.

0

나는이 오류가 있었는데, 나는 QtWebKit과 관련 있다고 생각하지만 wicked_pdf를 사용할 때.wkhtmltopdf와 qtwebkit에 대한 의존성을 OSes (OSX를 dev에서, 때로는 dev를 우분투로 실행하고, 다른 플랫폼에서는 곧 배치 할 수 있지만 곧 배포 할 수 있습니다)에 의존하여 힘들었습니다. 그래서 나는 또한 회피책을 사용했습니다. 나는 moment.js를 사용하여 Date 객체를 새로 만들었고 모든 것이 효과가있었습니다. 후드를 살펴보고 작동 방식을 확인할 시간이 없었지만 추측은 그 순간입니다 .js는 브라우저 지원을 테스트하여 "YYYY-MM-DD"를 날짜 개체로 바꾸는 것에 영리합니다.

실제로 코드가 실행중인 OS를 신경 쓰지 않고 moment.js lib를 포함 할 수있는 경우이 방법을 사용하는 것이 좋습니다. 이렇게하면 WebKit이 실행되고 있는지 신경 쓸 필요가 없습니다.