我試圖在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
我怎樣才能得到這個運行基本示例?
編輯:玩過周圍多一點這個問題,並發現,當我指定的命令行環境變量:
$ 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
...
...然後模塊似乎找到了!所以我的問題基本上簡化爲:我怎樣才能從我的php腳本中更改NODE_PATH
環境變量,所以我不必在shell中指定它 - 因爲顯然putenv("NODE_PATH=/usr/lib/node_modules");
對我而言並不真實...
As對於新的錯誤,有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:
```慶典
$ NPM安裝殭屍--save-dev的
```
...我認爲,也可以用nvm
安裝;所以我會試試...