Laravel PHP Process не может запустить узел - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь построить угловой проект из проекта Laravel.

Когда я запускаю команду exec из Laravel, я получаю env: node: No such file or directory

Шаги для воспроизведения:

  1. создать проект Laravel: laravel new laravel-bug
  2. создать угловой проект: ng new angular-bug

В файле Laravel routs / web.php, в / route добавьте:

use Symfony\Component\Process\Process;
$process = new Process('cd /path/to/angular-bug && ng build');
$process->run(function ($type, $buffer) {
    if (Process::ERR === $type) {
        echo 'ERR > '.$buffer;
    } else {
        echo 'OUT > '.$buffer;
    }
});

Это выведет результат, который для меня будет env: node: Нет такого файла или каталога

Есть идеи?

1 Ответ

0 голосов
/ 16 октября 2018

У меня была эта проблема раньше, когда node не было на пути пользователя веб-сервера.Второй аргумент метода Process::run() - это массив переменных среды.Используйте его для установки пути.

<?php
use Symfony\Component\Process\Process;
$env = ["PATH" => "/sbin;/bin:/usr/sbin:/usr/bin:/path/to/node/if/its/different"];
$process = new Process('cd /path/to/angular-bug && ng build');
$process->run(function ($type, $buffer) {
    if (Process::ERR === $type) {
        echo 'ERR > '.$buffer;
    } else {
        echo 'OUT > '.$buffer;
    }
}, $env);

Проблема в том, что где-то в этом процессе сборки что-то просто вызывает node и ожидает, что оно будет в пути.(Я думаю, что испытал это при запуске npm.) Это не очень хорошая вещь, и программное обеспечение должно знать, где оно находится, из-за настроек времени компиляции или информации из системы управления пакетами, или оно должнопопытаться найти его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...