生产服务器上使用Composer安装Laravel Nova失败

3

我已经将Laravel Nova添加到我们的应用程序中并购买了许可证。在本地服务器上一切都运行得很完美。但是,当我尝试将更新后的应用程序部署到我们的Linux服务器并运行composer update时,它会显示以下信息:

Failed to download laravel/nova from dist: /var/www/{myPath} does not exist and could not be created.
    Now trying to download from source

Syncing laravel/nova (3.29.0) into cache

Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos
Head to https://github.com/settings/tokens/new It will be stored in "/var/www/{myPath}"

所以我创建了一个 GitHub令牌,并将Laravel Nova凭据添加到服务器上的 auth.json 文件中。一切都应该是正确的,并且正如我之前所说,它在本地副本上运行良好。然而,我正在收到以下错误:

[RuntimeException]                                                                                                                                    
Failed to execute git clone --mirror -- 'git@github.com:laravel/nova.git' '/var/www/{myPath}/.cache/composer/vcs/git-github.com-laravel-nova.git/'                                                                                                                                              
                                                                                                                                                        
Cloning into bare repository '/var/www/{myPath}/.cache/composer/vcs/git-github.com-laravel-nova.git'...                                     
ERROR: Repository not found.                                                                                                                          
fatal: Could not read from remote repository.                                                                                                         
                                                                                                                                                        
Please make sure you have the correct access rights                                                                                                   
and the repository exists.      

我该如何解决这个问题?


1
为什么在部署过程中需要运行 composer update 呢?这可能会导致不同的库被安装在不同的系统上,这是您应该始终避免的。 - Nico Haase
此外,/var/www/{myPath} 不存在,也无法创建听起来很奇怪——你尝试过什么方法来解决这个问题?该路径可能是丢失的,或者配置了错误的权限,以至于您的部署过程无法写入该路径? - Nico Haase
@NicoHaase:我知道composer update的作用。部署是在我们的公共DevServer上进行的。{myPath}只是一个占位符,因为涉及隐私问题,无法显示真实路径。配置没有任何问题。这完全与Laravel Nova资源有关。 - arety_
3个回答

4

删除 /vendor 目录和 composer.lock 文件,然后运行 composer install --optimize-autoloader --no-dev 命令解决了这个问题。


这可能非常有问题。锁定文件的存在是有原因的,即为了锁定具有已知兼容性的版本。 - Peter Kionga-Kamau

1

我曾经遇到过类似的问题,最终找出了原因,是由于 laravel/nova:3.29 引起的。只需将其升级至 3.30 版本即可解决问题,无需删除整个 composer.lock 文件,因为这样也会更新其他软件包。


你是如何升级的?你不能仅仅更改composer.lock文件,它需要新的哈希值和下载目标,并且可能有依赖关系。 - Peter Kionga-Kamau
1
composer require "laravel/nova:3.30",它会更新 composer.lock 但不会完全删除它,就像@arety_所说的那样。 - Jasper Dy

0
  1. 在根目录下创建名为 "auth.json" 的文件
  2. 将您的 Nova 凭证复制到其中
{
    "http-basic": {
        "nova.laravel.com": {
            "username": "email",
            "password": "passsword"
        }
    }
}

composer update

这些如何在环境中保留而不是放在源代码中?似乎把凭据放在那里有点靠不住... - Peter Kionga-Kamau
我在MacOS本地将我的文件保存在~/.composer/auth.json。这样,授权就适用于所有使用Nova的项目。这是本地的。 - Blue Squirrel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接