node.js — php-node Node Express не может найти модуль

Ошибка:

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
[email protected] F:\Users\MichaelJacksonIsDead\AppData\Roaming\npm\node_mod
ules\publisherServer
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], raw-body@2.
0.2, [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], f
[email protected], [email protected], [email protected], [email protected], range-parse
[email protected], [email protected], [email protected], [email protected], [email protected], ser
[email protected], [email protected], [email protected], [email protected], on
[email protected], [email protected], [email protected], [email protected], [email protected], type-is@1.
6.2, [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected])

F:\Users\MichaelJacksonIsDead\publisherServer>npm start

> [email protected] 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-узла для проекта. https://www.npmjs.com/package/php-node, не проблема, но было бы неплохо иметь более специфический тег 🙂

1

Решение

Я нашел ответ, спасибо @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.

2

Другие решения

Вам следует только использование -g когда вы устанавливаете модуль из npm, который содержит утилиту командной строки (например, express-generator является примером этого). Однако почти во всех случаях вы должны просто сделать npm install <module name> который установит модуль локально и позволит вам require() Это.

Ну действуй npm install в корневом каталоге вашего проекта и require() должен быть в состоянии найти php-node,

1

По вопросам рекламы [email protected]