2012-04-11 12 views
5

Sul mio computer portatile OS X 10.7.3 (Lion), non posso analizzare stringhe di date JavaScript con Qt WebKit utilizzando il costruttore Date. Utilizzando uno gelsomino senza testa-webkit o phantomJS, tutte le chiamate piace:new Date ("YYYY-MM-DD") ha smesso di funzionare in Qt WebKit dopo aver rimosso MacPorts

new Date("2012-04-10") 

ritornano sempre

"Invalid Date" 

invece di un oggetto Date valido. Qualche settimana fa, tutto andava bene, e ho controllato su una mezza dozzina di computer con un setup simile e non posso riprodurre il problema da nessun'altra parte.

Sono abbastanza certo che i problemi sono iniziati quando ho deciso di svuotare la mia vecchia installazione di MacPorts presumibilmente non utilizzata (ho passato da tempo a Homebrew e stavo facendo delle pulizie di casa). Sospetto che ci sia una libreria collegata dinamicamente che è stata rimossa dal mio sistema, che viene utilizzata da Qt per l'analisi della data.

Qualcuno ha idea di cosa possa essere chiamata questa libreria di analisi delle date? Qualche idea se posso installarlo con Homebrew o riparare in qualche modo manualmente la dipendenza mancante?

Ho provato a reinstallare Qt e molte altre librerie, ma nulla ha risolto il problema.

+0

: Immagino che questo non abbia mai funzionato su phantomJS, il problema è localizzato in jasmine-headless-webkit. Ho iniziato a sospettare che il gelsomino potrebbe non essere in esecuzione in QtWebkit per i miei colleghi, forse sta usando Node.js o qualcos'altro. Continuerò a indagare. Questa domanda potrebbe non essere valida, ma la lascerò aperta finché non ne saprò di più. –

risposta

2

Non ho un Mac, ma data una situazione simile per Windows, vorrei utilizzare un programma in grado di riportare informazioni sulle dipendenze di un'applicazione come Dependency Walker. Una rapida ricerca suggerita this program potrebbe aiutare nel mondo Mac.

+0

Grazie per quello! Sono in grado di visualizzare molte informazioni interessanti aprendo /Library/Frameworks/QtWebKit.framework/Versions/Current/QtWebKit. Ma ci sono un sacco di dipendenze e non ho ancora capito il problema della causa principale, quindi non posso contrassegnarlo come una risposta accettata (ti ha dato comunque un upvote). –

1

Ok, ho risolto il problema con l'analisi della data con jasmine-headless-webkit. Sfortunatamente, non ero abbastanza scientifico su questo, quindi non sono esattamente sicuro di cosa sia stato risolto. E 'stato probabilmente alcuni o tutti i seguenti processi:

  1. Rimozione di tutte le tracce di Qt da/Library/Frameworks/Qt * e homebrew (/ usr/local/Qt * e/usr/local/Cantina/qt *)
  2. Reinstallare le librerie Qt da http://qt.nokia.com/downloads/ (le librerie, non l'SDK in alto)
  3. aggiornamento homebrew via "aggiornamento brew"
  4. birra installare qt

Inoltre ho installato il Qt SDK e XCode 4.3, ma non credo che è stato risolto perché i miei colleghi non hanno installato queste cose e non hanno avuto lo stesso problema di me.

C'è una possibilità che questo non ha nulla a che fare con MacPorts ma potrebbe aver avuto qualcosa a che fare con la mia vecchia installazione Qt 4.7. Ora sto utilizzando Qt 4.8.

Siamo spiacenti per tutto il rumore! Forse queste informazioni aiuteranno qualcun altro.

0

Sembra che questo bug dovrebbe essere risolto in v1.8, secondo emettere 187 "PhantomJS sembra rompere il formato di data ISO8601":

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

Nel frattempo, una soluzione alternativa da quel bug report è di aggiungere "T00: 00: 00Z" alla tua data.

0

Ho avuto questo errore, presumo relativo a QtWebKit ma quando si utilizza wicked_pdf.È stato difficile scoprire le dipendenze su wkhtmltopdf e qtwebkit attraverso i sistemi operativi (eseguo OSX in dev, a volte Ubuntu in dev, ci distribuiamo su Heroku ma potremmo distribuirli presto su altre piattaforme), quindi ho puntato e ho usato anche una soluzione alternativa. Ho usato moment.js per aggiornare un oggetto Date e tutto ha funzionato. Non ho avuto il tempo di guardare sotto il cofano e vedere come funziona, ma la mia ipotesi è che moment.js sia intelligente nel trasformare "YYYY-MM-DD" in un oggetto data testando il supporto del browser.

Questo è in realtà una buona soluzione per questo quando non vuoi preoccuparti di quale sistema operativo è in esecuzione il tuo codice e può permettersi di includere la lib di momento.js. In questo modo non devi preoccuparti di quale WebKit è in esecuzione.

aggiornamento
Problemi correlati