nodejs не может найти модуль "зомби" с PHP норкой

Я пытаюсьНорка (PHP) на Ubuntu 14.04; Я в основном сделал следующее:

$ apt-show-versions nodejs
nodejs:amd64/trusty 0.10.45-1nodesource1~trusty1 uptodate
$ npm -v
2.15.1
$ sudo npm install -g zombie
npm WARN engine [email protected]: wanted: {"node":"^4.0.0"} (current: {"node":"0.10.45","npm":"2.15.1"})
...
[email protected] /usr/lib/node_modules/zombie
├── [email protected]
├── [email protected]
...

$ ls /usr/lib/node_modules/zombie/node_modules/
babel-runtime  bluebird  debug  eventsource  iconv-lite  jsdom  lodash  mime  ms  request  tough-cookie  ws

Таким образом, в принципе, даже если я получаю предупреждение, модули собираются и должны находиться в каталоге/usr/lib/node_modules.

Тогда я делаю:

mkdir test_php_mink
cd test_php_mink/
composer require behat/mink
composer require behat/mink-zombie-driver

В качестве проверки:

test_php_mink$ ls
composer.json  composer.lock  vendor

... кажется всеcomposer файлы есть.

Наконец, согласноhttp://mink.behat.org/en/latest/drivers/zombie.html (а такжеНе удается найти модуль «Зомби» · Выпуск № 84 · Ассаф / Зомби · GitHub), Я пытаюсь этот скрипт:

<?php

# composer autoload:
require_once __DIR__ . '/vendor/autoload.php';

echo "safe_mode: '" . ini_get("safe_mode") ."'\n"; # have PHP 5.5.9, safe_mode is removed

putenv("NODE_PATH=/usr/lib/node_modules");
echo "NODE_PATH is: '" . getenv ( "NODE_PATH" ) . "'\n"; # OK, is there

# NOPE:
#$driver = new \Behat\Mink\Driver\ZombieDriver();

$driver = new \Behat\Mink\Driver\ZombieDriver(
  new \Behat\Mink\Driver\NodeJS\Server\ZombieServer()
);

$session = new \Behat\Mink\Session($driver);

// start the session
$session->start();
?>

Этот скрипт, к сожалению, все еще не работает с:

$ php test_php_mink.php 
safe_mode: ''
NODE_PATH is: '/usr/lib/node_modules'
PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'Server process has been terminated: (8) [
module.js:340
    throw err;
          ^
Error: Cannot find module 'zombie'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/path/to/test_php_mink/vendor/behat/mink-zombie-driver/bin/mink-zombie-server.js:3:14)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
]' in /path/to/test_php_mink/vendor/behat/mink-zombie-driver/src/NodeJS/Server.php:413
Stack trace:
#0 /path/to/test_php_mink/vendor/behat/mink-zombie-driver/src/NodeJS/Server.php(306): Behat\Mink\Driv in /path/to/test_php_mink/vendor/behat/mink-zombie-driver/src/NodeJS/Server.php on line 413

Как мне запустить этот базовый пример?

РЕДАКТИРОВАТЬ: поэкспериментировал с этим и обнаружил, что когда я указываю переменную окружения в командной строке:

$ NODE_PATH=/usr/lib/node_modules php test_php_mink.php
safe_mode: ''
NODE_PATH is: '/usr/lib/node_modules'
PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'Server process has been terminated: (8) [
/usr/lib/node_modules/zombie/node_modules/jsdom/lib/jsdom/level2/html.js:238
var nonInheritedTags = new Set([
                           ^
ReferenceError: Set is not defined
...

... тогда модуль, кажется, найден! Таким образом, мой вопрос сводится к: как я могу изменитьNODE_PATH переменная окружения из моего php-скрипта, поэтому мне не пришлось бы указывать ее в оболочке - так как, очевидно,putenv("NODE_PATH=/usr/lib/node_modules"); у меня не очень получается ...

Что касается новой ошибки, естьУстановка Zombie.js Ошибка: ReferenceError: Набор не определен. Что я делаю неправильно? - видимо, это связано с несовпадением версий, за которые я получил предупреждение (npm WARN engine [email protected]: wanted: {"node":"^4.0.0"} (current: {"node":"0.10.45","npm":"2.15.1"})), так что я думаю, мне придется установитьnvm так что я могу установить правильную версию nodejs; и я также заметил в/usr/lib/node_modules/zombie/README.md:

Зомби 4.х протестирован для работы сio.js 1.6 или более поздняя версия.
Если вам нужно использовать Node 0.12 или более раннюю версию, рассмотрите возможность использования Zombie 2.x. ...
Для установки Zombie.js вам понадобитсяio.js:
`` `Баш
$ npm установить зомби --save-dev
`` `

... и я думаю, что также может быть установлен сnvm; так что я попробую ...

Ответы на вопрос(1)

Ваш ответ на вопрос