我正在尝试从Laravel项目构建一个有角度的项目。
当我从Laravel运行exec命令时,我得到了env: node: No such file or directory
复制步骤:
laravel new laravel-bug
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:没有这样的文件或目录
有什么想法吗?
答案 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
时经历过。)这不是一件好事,并且由于编译时设置或来自软件包管理系统的信息,软件应该知道它的位置。它应该尝试找到它。