2012-06-24 27 views
13

Tengo un script nodejs que usa phantomjs-node para raspar una página web. Funciona bien cuando corro desde una ventana de terminal, pero no cuando lo ejecuto desde Webstorm a través de una configuración de ejecución para una aplicación Node JS.El script falla en Webstorm pero no desde el terminal

¿Qué podría estar causando el error en Webstorm?

Ya he intentado ejecutar el script desde el terminal después de comentar el contenido de .bash_profile y todavía funciona. También he comprobado el contenido de process.env en otra secuencia de comandos de muestra y vi que los valores son completamente diferentes en Webstorm vs. terminal.

El guión:

var phantom = require('phantom'); 
phantom.create(function(ph) { 
    return ph.createPage(function(page) { 
     return page.open("http://www.google.com", function(status) { 
      console.log("opened google? ", status); 
      return page.evaluate((function() { 
       return document.title; 
      }), function(result) { 
       console.log('Page title is ' + result); 
       return ph.exit(); 
      }); 
     }); 
    }); 
}); 

salida de la terminal (funciona muy bien!):

opened google? success 
Page title is Google 

WebStorm salida de la consola (falla):

/usr/local/bin/node phantom.js 
phantom stderr: execvp(): No such file or directory 


Process finished with exit code 0 
+1

Si está en Mac, consulte esta pregunta: http://apple.stackexchange.com/q/51677. – CrazyCoder

Respuesta

25

Webstorm establece una variable PATH, pero es diferente a la variable PATH que obtiene su aplicación cuando se ejecuta en la terminal. Mi solución, un truco:

  1. Tipo node para llegar a la REPL
  2. Run process.env
  3. Copiar el contenido del valor de PATH
  4. Añadir una variable de entorno a WebStorm llama ruta que utilice este valor. Sobrescribirá la variable PATH predeterminada que Webstorm le da a su aplicación.

¡Hecho!

+0

Esto finalmente me ayudó con Rubymine teniendo el mismo problema. – forforf

+0

¿Cómo se agrega la variable del entorno a la tormenta web? – pgreen2

+1

@ pgreen2 vaya a la pantalla Ejecutar/Configuraciones de depuración, seleccione la configuración del Nodo JS que está tratando de corregir, luego a la derecha entre los campos como 'Ruta al nodo' y 'Parámetros del nodo' debería ver un campo llamado 'Variables del entorno '. Haga clic en el botón '...' para llegar a una pantalla CRUD para variables de entorno para la configuración. – Trindaz

Cuestiones relacionadas