无法在新的 Homestead 安装上编译 Laravel 资产

Posted

技术标签:

【中文标题】无法在新的 Homestead 安装上编译 Laravel 资产【英文标题】:Cannot compile Laravel assets on new Homestead install 【发布时间】:2021-01-08 00:02:53 【问题描述】:

更新 3(最新)

根据以下建议(来自 justanothereddie),将驱动器配置为 NFS 解决了问题。不过我不知道为什么,所以将问题留待几天。

更新 2

刚刚购买了新的 MacBook Pro,但问题仍然存在。我可以运行npm install,前提是该文件夹不与主机共享。如果与主机共享,则失败。

更新 1

我发现如果我正在使用的驱动器未与主机共享,我可以编译 Laravel 资产。我正在运行发行版的 VirtualBox 包,它是 6.1.10。最新版本是 6.1.12,所以也许可以修复它。

编辑:

原本我以为这个问题与 Laravel Jetstream 有关,但我现在发现它与 Laravel 的关系更广泛。我已经完成了vagrant destroy 删除机器,删除了我的 Homestead 目录,并从头开始重新安装了 Homestead。

当我执行laravel new my_project 时,安装正常,但一旦我发出npm install,它就会失败,并显示与以下相同的错误消息。我不明白为什么没有其他人报告这一点。这是一个非常简单的过程,我过去成功完成了大约 100 次,唯一没有尝试过的是新硬件或 VirtualBox 安装。

原帖:

几天前做了vagrant destroy,并在我的 Ubuntu 主机 (20.04.1) 上安装了新的 Homestead。第一次尝试安装Jetstream,惯性堆栈,--teams。尝试了 vagrant new 方法和 composer 方法。两次都失败并出现以下错误。

npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /home/vagrant/code/ftmv2/node_modules/yargs/node_modules/yargs-parser/package.json.1863223755
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/home/vagrant/code/my_test/node_modules/yargs/node_modules/yargs-parser/package.json.1863223755'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

删除node_modules 目录并重试npm_install,但结果相同。

Jetstream 版本:^1.2 Jetstream 堆栈:惯性 Laravel 版本:^8.0 php 版本:^7.3 Laravel 安装程序版本:4.0.3 NPM 版本:6.14.8

【问题讨论】:

这对您有帮助吗github.com/npm/npm/issues/992#issuecomment-289935776 ? 感谢 Clement,现在一切正常(请参阅上面的 NFS 解决方法)。如果需要,我可能会进一步查看此建议。 【参考方案1】:

在我的 MacBook Pro 上遇到了完全相同的问题,并在我的 Homestead.yaml 中的“文件夹”中添加了类型:“nfs”。是否重新加载了 vagrant --provision ,现在 npm 将安装和编译

【讨论】:

哇,谢谢。那行得通。我不知道为什么,所以将问题留待几天。【参考方案2】:

我已经被这个问题困扰了很长时间,似乎问题是在 laravel/homestead 盒子中使用 npm install 作为流浪用户,所以主要问题是同步文件夹的权限之一,这是 Homestead.yaml 的主要任务。

引用于:https://www.vagrantup.com/docs/synced-folders/nfs.html

这个问题有两种解决方案:

一个可以让你在宅基地正常工作,另一个就像一个补丁。

在 Homestead.yaml 上的文件夹映射正下方插入下一行

type: "nfs"

这里的文档:https://laravel.com/docs/8.x/homestead

下一个选项只是在您的系统中工作,它拥有所有权限,因为它“拥有”您正在工作的文件夹。

不要在 vagrant 中执行 npm install,而是转到系统(您的计算机)中的文件夹并从那里使用命令。

如果您需要全新安装您的项目,请使用:

rm -rf node_modules
npm cache clean

【讨论】:

以上是关于无法在新的 Homestead 安装上编译 Laravel 资产的主要内容,如果未能解决你的问题,请参考以下文章

代码块无法在 mac OSX 上编译

Erlang/OTP 无法在 Solaris 11 11/11 上编译

最小化安装的centos7.5上编译安装git2.19

如何在最小化安装的CentOS 7.5上编译安装Git2.19

CentOS6上编译安装httpd2.4

未定义的参考在 arm chromebook 上编译 taskwarrior