Laravel PHP 进程无法运行节点



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

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

重现步骤:

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

在 Laravel 文件中 routes/web.php 的/route 中添加:

use SymfonyComponentProcessProcess;
$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:没有这样的文件或目录

有什么想法吗?

我以前遇到过这个问题,当时node不在 Web 服务器用户的路径中。Process::run()方法的第二个参数是环境变量数组。使用它来设置路径。

<?php
use SymfonyComponentProcessProcess;
$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时经历过它。这不是一件好事,由于编译时设置或来自包管理系统的信息,软件应该知道它的位置,或者它应该尝试找到它。

最新更新