私はUbuntu 14.04でMink (PHP)を試しています。nodejsがPHPミンクで 'ゾンビ'モジュールを見つけられない
$ 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あたり(ともCannot find module 'zombie' · Issue #84 · assaf/zombie · 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
は、どのように私はこれを取得することができます実行するための基本的な例?
EDIT:これでより多くのビットを中心に演奏し、私はコマンドラインで環境変数を指定するときにことを発見:
$ 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");
は本当に私にとっては役に立たないので...
新しいエラーのために、Installing Zombie.js Error: ReferenceError: Set is not defined. What am I doing wrong?があります - 明らかにこれは私が(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.xのはio.js 1.6 or laterで動作するようにテストされています。
ノード0.12以前を使用する必要がある場合は、Zombie 2.xの使用を検討してください。 ...
はあなたが必要となりますZombie.jsをインストールするにはio.js:
`` `bashの
$は
` ``
--save-devのゾンビをインストールNPM ...と私は考えていることnvm
と一緒にインストールすることもできます。だから、私はそれを試してみましょう...