2012-06-24 9 views
13

Ich habe ein Nodejs-Skript, das Phantomjs-Node verwendet, um eine Webseite zu scrappen. Es funktioniert gut, wenn ich von einem Terminal-Fenster aus laufe, aber nicht, wenn ich innerhalb von Webstorm über eine Laufkonfiguration für eine Node JS-Anwendung laufe.Skript schlägt in Webstorm fehl, aber nicht vom Terminal

Was könnte den Fehler in Webstorm verursachen?

Ich habe bereits versucht, das Skript aus dem Terminal auszuführen, nachdem ich den Inhalt von .bash_profile auskommentiert habe, und es funktioniert immer noch. Ich habe auch den Inhalt von process.env in einem anderen Beispielskript überprüft und festgestellt, dass die Werte in Webstorm vs. Terminal völlig unterschiedlich sind.

Das Skript:

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(); 
      }); 
     }); 
    }); 
}); 

Terminal-Ausgang (funktioniert super!):

opened google? success 
Page title is Google 

WebStorm Konsolenausgabe (versagt):

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


Process finished with exit code 0 
+1

Wenn Sie auf Mac sind, überprüfen Sie diese Frage: http://apple.stackexchange.com/q/51677. – CrazyCoder

Antwort

25

Webstorm legt eine PATH-Variable fest, unterscheidet sich jedoch von der PATH-Variablen, die Ihre Anwendung beim Ausführen im Terminal erhält. Meine Lösung, ein Hack:

  1. Typ node zum REPL bekommen
  2. Run process.env
  3. Kopieren Sie den Inhalt des PATH Wert
  4. eine Umgebungsvariable In den WebStorm PATH genannt, die diesen Wert verwendet. Es überschreibt die Standard-PATH-Variable, die Webstorm Ihrer App gibt.

Fertig!

+0

Dies half mir schließlich mit Rubymine das gleiche Problem zu haben. – forforf

+0

Wie fügst du die Umgebungsvariable zu webstorm hinzu? – pgreen2

+1

@ pgreen2 Gehen Sie zum Bildschirm Run/Debug Configurations, wählen Sie die Node JS-Konfiguration, die Sie reparieren möchten, und dann rechts unter den Feldern 'Path to Node' und 'Node Parameters' sollten Sie ein Feld namens 'Environment Variables' sehen ". Klicken Sie dort auf die Schaltfläche "...", um zu einem CRUD-Bildschirm für Umgebungsvariablen für die Konfiguration zu gelangen. – Trindaz