脚本在 Webstorm 中失败,但不是来自终端

Posted

技术标签:

【中文标题】脚本在 Webstorm 中失败,但不是来自终端【英文标题】:Script fails in Webstorm but not from terminal 【发布时间】:2012-06-25 20:45:17 【问题描述】:

我有一个 nodejs 脚本,它使用 phantomjs-node 来抓取网页。当我从终端窗口运行时,它工作正常,但当我通过 Node JS 应用程序的运行配置从 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

【问题讨论】:

如果您使用的是 Mac,请检查以下问题:apple.stackexchange.com/q/51677。 【参考方案1】:

如果您使用的是 Mac,请参阅 http://devnet.jetbrains.net/docs/DOC-1160。本文档最初是为 RubyMine 编写的,但也适用于 WebStorm。

【讨论】:

【参考方案2】:

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

    输入 node 以访问 REPL 运行process.env 复制PATH值的内容 向 Webstorm 添加一个名为 PATH 的环境变量,该变量使用该值。它将覆盖 Webstorm 为您的应用提供的默认 PATH 变量。

完成!

【讨论】:

这终于帮助我解决了 Rubymine 遇到同样的问题。 如何将环境变量添加到 webstorm 中? @pgreen2 转到运行/调试配置屏幕,选择您要修复的 Node JS 配置,然后在右侧的“节点路径”和“节点参数”等字段中,您应该请参阅名为“环境变量”的字段。单击那里的“...”按钮,进入 CRUD 屏幕以获取配置的环境变量。 @Trindaz Ahh...就在我面前。谢谢。 为什么这首先是必要的?在 cmd 行中它工作正常.. 是否有不需要这个额外步骤的解决方案?

以上是关于脚本在 Webstorm 中失败,但不是来自终端的主要内容,如果未能解决你的问题,请参考以下文章

WebStorm:解决冲突后继续与生成的提交消息合并

如何在 WebStorm 或任何其他 JetBrains 产品中使用 WSL 作为默认终端?

从服务工作者发送的 CORS 预检请求,但不是来自常规请求

执行 mvn install 或 mvn test 但不是来自 Intellij 时集成测试失败

python import 以交互方式工作,但不是来自脚本

如何在IPython控制台中默认运行文件而不是终端?