2012-06-24 49 views
13

我有一个nodejs脚本,它使用phantomjs-node来抓取网页。当我从终端窗口运行时,它工作正常,但是当我通过Node JS应用程序的运行配置从Webstorm内部运行时,它工作正常。脚本在Webstorm中失败,但不是从终端

什么可能导致Webstorm中的错误?

我已经尝试在注释掉.bash_profile的内容之后从终端运行脚本,它仍然有效。我还在另一个示例脚本中检查了process.env的内容,发现Webstorm和终端的值完全不同。

脚本:

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

端子输出(伟大工程!):

opened google? success 
Page title is Google 

Webstorm控制台输出(失败):

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


Process finished with exit code 0 
+1

如果您在Mac上,请检查以下问题:http://apple.stackexchange.com/q/51677。 – CrazyCoder

回答

25

Webstorm确实设置了一个PATH变量,但它与您的应用在终端中运行时获得的PATH变量不同。我的解决办法,一个黑客:

  1. 类型node才能到REPL
  2. 运行process.env
  3. 复制路径值
  4. 的内容添加一个环境变量来Webstorm称为使用此值路径。它将覆盖Webstorm为您的应用程序提供的默认PATH变量。

完成!

+0

这最终帮助我与鲁米姬有同样的问题。 – forforf

+0

你如何将环境变量添加到webstorm? – pgreen2

+1

@ pgreen2进入运行/调试配置屏幕,选择您要修复的Node JS配置,然后在“路径到节点”和“节点参数”等字段右侧,您应该看到一个名为'Environment Variables ”。点击那里的'...'按钮,让你进入配置环境变量的CRUD屏幕。 – Trindaz

相关问题