Laravel PHP进程无法运行节点

时间:2018-10-15 21:20:28

标签: php node.js angular laravel npm

我正在尝试从Laravel项目构建一个有角度的项目。

当我从Laravel运行exec命令时,我得到了env: node: No such file or directory

复制步骤:

  1. 创建Laravel项目:laravel new laravel-bug
  2. 创建角度项目:ng new angular-bug

在Laravel文件route / 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 :(得分:0)

node不在Web服务器用户路径中时,我遇到过此问题。 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时经历过。)这不是一件好事,并且由于编译时设置或来自软件包管理系统的信息,软件应该知道它的位置。它应该尝试找到它。