php-node Node Express无法find模块

错误是:

Cannot find module 'php' Error: Cannot find module 'php' at Function.Module._resolveFilename (module.js:336:15) at Function.Module._load (module.js:278:25) at Module.require (module.js:365:17) at require (module.js:384:17) at new View (F:\Users\MichaelJacksonIsDead\publisherServer\node_modules\express\lib\view.js:50:49) at EventEmitter.app.render (F:\Users\MichaelJacksonIsDead\publisherServer\node_modules\express\lib\application.js:545:12) at ServerResponse.res.render (F:\Users\MichaelJacksonIsDead\publisherServer\node_modules\express\lib\response.js:938:7) at F:\Users\MichaelJacksonIsDead\publisherServer\routes\index.js:12:6 at Layer.handle [as handle_request] (F:\Users\MichaelJacksonIsDead\publisherServer\node_modules\express\lib\router\layer.js:82:5) at next (F:\Users\MichaelJacksonIsDead\publisherServer\node_modules\express\lib\router\route.js:110:13) 

这个页面呈现为php的路线如下:

 router.get('/index.php', function(req, res, next) { var render = require('php-node')({bin:"F:\\xampp\php\\php.exe"}); res.render('index.php'); }); 

我已经在项目级别和级别上运行了npm install -g,npm install node-php -g没有成功:

 F:\Users\MichaelJacksonIsDead\publisherServer>npm install -g publisherServer@0.0.0 F:\Users\MichaelJacksonIsDead\AppData\Roaming\npm\node_mod ules\publisherServer ├── php-node@0.0.2 ├── debug@2.2.0 (ms@0.7.1) ├── serve-favicon@2.2.1 (ms@0.7.1, fresh@0.2.4, parseurl@1.3.0, etag@1.6.0) ├── cookie-parser@1.3.5 (cookie@0.1.3, cookie-signature@1.0.6) ├── morgan@1.5.3 (basic-auth@1.0.1, depd@1.0.1, on-finished@2.2.1) ├── body-parser@1.12.4 (bytes@1.0.0, content-type@1.0.1, depd@1.0.1, raw-body@2. 0.2, on-finished@2.2.1, qs@2.4.2, iconv-lite@0.4.8, type-is@1.6.2) ├── express@4.12.4 (merge-descriptors@1.0.0, utils-merge@1.0.0, methods@1.1.1, f resh@0.2.4, cookie@0.1.2, escape-html@1.0.1, cookie-signature@1.0.6, range-parse r@1.0.2, content-type@1.0.1, parseurl@1.3.0, finalhandler@0.3.6, vary@1.0.0, ser ve-static@1.9.3, content-disposition@0.5.0, path-to-regexp@0.1.3, depd@1.0.1, on -finished@2.2.1, qs@2.4.2, etag@1.6.0, proxy-addr@1.0.8, send@0.12.3, type-is@1. 6.2, accepts@1.2.7) ├── hjs@0.0.6 (hogan.js@3.0.2) └── less-middleware@1.0.4 (mkdirp@0.3.5, node.extend@1.0.10, less@1.7.5) F:\Users\MichaelJacksonIsDead\publisherServer>npm start > publisherServer@0.0.0 start F:\Users\MichaelJacksonIsDead\publisherServer > node ./bin/www GET /index.php 500 41.145 ms - 954 

有没有人有这个问题的任何期限? 据我可以告诉我已经正确安装了它…也确保我添加到我的json文件包如下:

  "dependencies": { "body-parser": "~1.12.4", "cookie-parser": "~1.3.5", "debug": "~2.2.0", "express": "~4.12.4", "hjs": "~0.0.6", "less-middleware": "1.0.x", "morgan": "~1.5.3", "serve-favicon": "~2.2.1", "php-node": "0.0.2" } 

最后,我没有足够的代表为项目打开一个标签php-node @ https://www.npmjs.com/package/php-node ,不是一个问题,但会很高兴有一个更speficic标签:)

我find了答案,谢谢@mscdex和@ adeneo

我更换了默认值:

 // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hjs'); 

 // use PHP as view engine in Express var phpnode = require('php-node')({bin:"F:\\xampp\\php\\php.exe"}); app.engine('php', phpnode); app.set('view engine', 'php'); 

在路线下:

 /* GET home page. */ router.get('/', function(req, res, next) { res.render('index.hjs', { title: 'Express' }); }); router.get('/index.php', function(req, res, next) { res.render('index.php'); }); 

该应用程序仍然支持PHP和index.hjs页面。

当你从npm安装一个包含命令行实用程序的模块时,你应该使用-g (例如express-generator就是这样的一个例子)。 但是在几乎所有的情况下,你只需要简单地执行npm install <module name> ,它将在本地安装模块,并允许你require()它。

所以做npm install在你项目的根目录下,并且require()应该能够findphp-node