2012-04-11 15 views
5

En mi computadora portátil OS X 10.7.3 (Lion), no puedo analizar cadenas de fechas de JavaScript con Qt WebKit utilizando el constructor de fechas. El uso de cualquiera de jazmín-webkit-sin cabeza o PhantomJS, todas las llamadas como:nueva Fecha ("YYYY-MM-DD") dejó de funcionar en Qt WebKit después de eliminar los MacPorts

new Date("2012-04-10") 

siempre vuelven

"Invalid Date" 

en lugar de un objeto Date válida. Hace unas semanas, todo estaba funcionando bien, y lo he comprobado en media docena de computadoras con una configuración similar y no puedo reproducir el problema en ningún otro lado.

Estoy bastante seguro de que los problemas comenzaron cuando decidí limpiar mi antigua instalación de MacPorts supuestamente no utilizada (hace tiempo que me cambié a Homebrew y estaba haciendo una limpieza doméstica). Sospecho que hay una biblioteca vinculada dinámicamente que se ha eliminado de mi sistema, que Qt usa para el análisis de la fecha.

¿Alguien tiene alguna idea de cómo se podría llamar a esta biblioteca de análisis de fechas? ¿Alguna idea de si puedo instalarlo con Homebrew o de alguna manera reparar manualmente la dependencia faltante?

He intentado reinstalar Qt y muchas otras bibliotecas, pero nada ha solucionado el problema.

+0

actualización: Supongo que esto nunca funcionó en phantomJS, el problema está localizado en jasmine-headless-webkit. Estoy empezando a sospechar que jazmín no se está ejecutando en QtWebkit para mis compañeros de trabajo, tal vez está usando Node.js u otra cosa. Continuaré investigando. Esta pregunta puede ser inválida, pero la dejaré abierta hasta que sepa más. –

Respuesta

2

No tengo una Mac, pero dada una situación similar para Windows, utilizaría un programa que puede informar información sobre las dependencias de una aplicación como Dependency Walker. Una búsqueda rápida sugiere this program podría ayudar en el mundo de Mac.

+0

¡Gracias por eso! Puedo ver mucha información interesante abriendo /Library/Frameworks/QtWebKit.framework/Versions/Current/QtWebKit. Pero hay muchas dependencias y todavía no he resuelto el problema de la causa raíz, así que no puedo marcar esto como una respuesta aceptada (aunque le di un voto positivo). –

1

Bien, resolví el problema con el análisis de fecha con jasmine-headless-webkit. Desafortunadamente, no era lo suficientemente científico, así que no estoy seguro de qué lo solucionó. Que era probable que algunos o todos de los siguientes procesos:

  1. Extracción de todos los rastros de Qt desde/Library/Frameworks/Qt * y homebrew (/ usr/local/Qt * y/usr/local/Bodega/qt *)
  2. Vuelva a instalar las bibliotecas Qt desde http://qt.nokia.com/downloads/ (las bibliotecas, no es el SDK en la parte superior)
  3. actualización homebrew a través de "actualización de cerveza"
  4. cerveza instalar qt

Además he instalado el Qt SDK y XCode 4.3, pero no creo th está arreglado porque mis compañeros de trabajo no tienen estas cosas instaladas y no estaban teniendo el mismo problema que yo.

Existe la posibilidad de que esto no tenga nada que ver con MacPorts, pero podría haber tenido algo que ver con mi anterior instalación de Qt 4.7. Ahora estoy ejecutando Qt 4.8.

¡Perdón por todo el ruido! Tal vez esta información ayudará a alguien más.

0

Tuve este error, supongo que relacionado con QtWebKit pero al usar wicked_pdf.Fue difícil descubrir las dependencias de wkhtmltopdf y qtwebkit en los sistemas operativos (ejecuto OSX en desarrollo, a veces Ubuntu en desarrollo, implementamos en Heroku pero podemos implementarlo en otras plataformas pronto), así que utilicé una solución alternativa. Usé moment.js para actualizar un objeto Date y todo funcionó. No he tenido tiempo de mirar debajo del capó y ver cómo funciona, pero mi suposición es que moment.js es inteligente al convertir "YYYY-MM-DD" en un objeto de fecha al probar el soporte del navegador.

Esto es en realidad una buena solución para esto cuando no quiere importar en qué sistema operativo se está ejecutando su código y puede permitirse incluir el archivo moment.js lib. De esta forma, no tiene que preocuparse por qué WebKit se está ejecutando.

Cuestiones relacionadas