Script завершается сбой в Webstorm, но не с терминала

У меня есть nodejs script, который использует phantomjs- node для очистки веб-страницы. Он отлично работает, когда я запускаю из окна терминала, но не тогда, когда я запускаю из Webstorm через конфигурацию запуска для приложения Node JS.

Что может быть причиной ошибки в Webstorm?

Я уже пробовал запустить script из терминала после комментирования содержимого .bash_profile, и он все еще работает. Я также проверил содержимое process.env в другом примере script и увидел, что значения полностью отличаются в Webstorm и терминале.

script:

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

Webstorm устанавливает переменную PATH, но она отличается от переменной PATH, которую приложение получает при запуске в терминале. Мое решение, взлом:

  • Введите node, чтобы перейти к REPL
  • Выполнить process.env
  • Скопировать содержимое значения PATH
  • Добавьте переменную окружения в Webstorm под названием PATH, которая использует это значение. Он перезапишет переменную PATH по умолчанию, которую Webstorm предоставляет вашему приложению.

Готово!

Ответ 2

Если вы находитесь на Mac, см. http://devnet.jetbrains.net/docs/DOC-1160. Этот документ был первоначально написан для RubyMine, но он также применим к WebStorm.