nodejs kann Modul 'Zombie' mit PHP-Nerz nicht finden

Ich probiere ausMink (PHP) unter Ubuntu 14.04; Grundsätzlich habe ich folgendes gemacht:

$ 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

So im Grunde, auch wenn ich eine Warnung bekomme, bauen die Module und sollten im Verzeichnis sein/usr/lib/node_modules.

Dann mach ich

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

Als Scheck:

test_php_mink$ ls
composer.json  composer.lock  vendor

... es scheint allescomposer Dateien sind da.

Endlich, wie prohttp: //mink.behat.org/en/latest/drivers/zombie.htm (und auchKann das Modul 'Zombie' nicht finden · Ausgabe # 84 · assaf / zombie · GitHub), Ich versuche dieses Skript:

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

Dieses Skript schlägt leider immer noch fehl mit:

$ 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

Wie kann ich dieses grundlegende Beispiel ausführen?

EDIT: Ich habe ein bisschen mehr damit herumgespielt und festgestellt, dass, wenn ich die Umgebungsvariable in der Befehlszeile angebe:

$ 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
...

... dann scheint das Modul gefunden zu sein! Meine Frage reduziert sich also im Wesentlichen auf: Wie kann ich das @ änderNODE_PATH Umgebungsvariable aus meinem PHP-Skript, so dass ich es nicht auf der Shell angeben müsste - da anscheinendputenv("NODE_PATH=/usr/lib/node_modules"); funktioniert bei mir nicht wirklich ...

ie für den neuen Fehler gibt esInstalling Zombie.js Error: ReferenceError: Set ist nicht definiert. Was mache ich falsch - anscheinend liegt das an dem Versionskonflikt, für den ich eine Warnung erhalten habe npm WARN engine [email protected]: wanted: {"node":"^4.0.0"} (current: {"node":"0.10.45","npm":"2.15.1"})), also muss ich wohl installierennvm, damit ich die richtige nodejs-Version installieren kann; und mir ist auch aufgefallen in/usr/lib/node_modules/zombie/README.md:

Zombie 4.x ist getestet um mit @ zu arbeit io.js 1.6 oder höher.
Wenn Sie Node 0.12 oder früher verwenden müssen, ziehen Sie die Verwendung von Zombie 2.x in Betracht. ...
Zur Installation von Zombie.js benötigen Sie io.js:
`` `bash
$ npm installiere Zombie --save-dev
``

... und ich denke das kann auch mit @ installiert werdnvm; also werde ich das mal ausprobieren ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage