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
; так что я попробую ...