2012-04-11 4 views
5

Auf meinem OS X 10.7.3 (Lion) Laptop kann ich keine JavaScript-Datumszeichenfolgen mit Qt WebKit mit dem Date-Konstruktor parsen. Entweder mit Jasmin-Headless-webkit oder PhantomJS, wie alle Anrufe:neues Datum ("YYYY-MM-DD") funktioniert nicht mehr in Qt WebKit nach dem Entfernen von MacPorts

new Date("2012-04-10") 

immer

"Invalid Date" 

anstelle eines gültigen Date-Objekt zurück. Vor ein paar Wochen hat alles gut funktioniert, und ich habe das auf einem halben Dutzend Computern mit einem ähnlichen Setup überprüft und kann das Problem nirgendwo anders reproduzieren.

Ich bin mir ziemlich sicher, dass die Probleme begannen, als ich beschloss, meine alte, angeblich ungenutzte MacPorts-Installation zu löschen (ich bin schon seit langem auf Homebrew umgestiegen und machte eine Hausreinigung). Ich vermute, dass es eine dynamisch verknüpfte Bibliothek gibt, die aus meinem System entfernt wurde, die von Qt für das Parsen von Datum verwendet wird.

Hat jemand eine Idee, wie diese Datumsparsing-Bibliothek heißen könnte? Irgendeine Idee, wenn ich es mit Homebrew installieren oder irgendwie die fehlende Abhängigkeit manuell reparieren kann?

Ich habe versucht, Qt und viele andere Bibliotheken neu zu installieren, aber nichts hat das Problem behoben.

+0

update: Ich denke, das hat nie in phantomJS funktioniert, das Problem ist auf Jasmin-Headless-Webkit lokalisiert. Ich habe angefangen zu vermuten, dass Jasmin in QtWebkit nicht für meine Mitarbeiter läuft, vielleicht nutzt es Node.js oder etwas anderes. Ich werde weiter nachforschen. Diese Frage mag ungültig sein, aber ich werde es offen lassen, bis ich mehr weiß. –

Antwort

2

Ich habe keinen Mac, aber eine ähnliche Situation für Windows, würde ich ein Programm verwenden, das Informationen über Abhängigkeiten einer Anwendung wie Dependency Walker melden kann. Eine schnelle Suche vorgeschlagen this program könnte in der Mac-Welt helfen.

+0

Danke dafür! Ich kann viele interessante Informationen sehen, indem ich /Library/Frameworks/QtWebKit.framework/Versions/Current/QtWebKit öffne. Aber es gibt viele Abhängigkeiten und ich habe immer noch nicht das Grundursache Problem, so kann ich dies nicht als eine akzeptierte Antwort markieren (gab Ihnen jedoch eine upvote). –

1

Ok, ich habe das Problem mit der Datumsanalyse mit Jasmine-Headless-Webkit gelöst. Leider war ich nicht wissenschaftlich genug, also bin ich mir nicht ganz sicher, was es getan hat. Es war wahrscheinlich einige oder alle der folgenden Verfahren:

  1. Entfernen aller Spuren von Qt aus/Library/Frameworks/Qt * und Homebrew (/ usr/local/Qt * und/usr/local/Keller/qt *)
  2. die Qt-Bibliotheken aus http://qt.nokia.com/downloads/ (die Bibliotheken neu installieren, nicht die SDK am oberen Rand)
  3. aktualisieren Homebrew über "Gebräu update"
  4. Gebräu qt installieren

Zusätzlich installierte ich das Qt SDK und XCode 4.3, aber ich denke nicht th Es ist behoben, weil meine Mitarbeiter diese Dinge nicht installiert haben und nicht das gleiche Problem hatten wie ich.

Es gibt eine Möglichkeit, dass dies nichts mit MacPorts zu tun hatte, aber vielleicht etwas mit meiner älteren Qt 4.7 Installation zu tun hatte. Ich laufe jetzt Qt 4.8.

Sorry für den ganzen Lärm! Vielleicht hilft diese Information jemand anderem.

0

Es sieht aus wie dieser Fehler zurückzuführen ist in v1.8 festgelegt wird, nach 187 zur Ausgabe von „PhantomJS scheint auf ISO8601 Datumsformat zu brechen“:

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

In der Zwischenzeit eine Behelfslösung aus Dieser Fehlerbericht fügt "T00: 00: 00Z" an Ihr Datum an.

0

Ich hatte diesen Fehler, ich nehme an, im Zusammenhang mit QtWebKit, aber bei Verwendung von breed_pdf.Es war schwierig, die Abhängigkeiten von wkhtmltopdf und qtwebkit über Betriebssysteme hinweg zu erkennen (ich betreibe OSX in dev, manchmal Ubuntu in dev, wir stellen es auf Heroku bereit, können es aber bald auf anderen Plattformen bereitstellen), also stürzte ich und benutzte auch eine Problemumgehung. Ich habe moment.js verwendet, um ein Date-Objekt neu zu erstellen, und alles hat funktioniert. Ich hatte keine Zeit, um unter die Haube zu schauen und zu sehen, wie es funktioniert, aber meine Vermutung ist, dass moment.js schlau davon ist, "YYYY-MM-DD" durch Testen der Browser-Unterstützung in ein Date-Objekt zu verwandeln.

Dies ist eigentlich eine ziemlich gute Lösung für dieses Problem, wenn Sie sich nicht darum kümmern wollen, auf welchem ​​Betriebssystem Ihr Code ausgeführt wird, und sich die Datei moment.js lib leisten kann. Auf diese Weise müssen Sie sich nicht darum kümmern, welches WebKit ausgeführt wird.