You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel集成dzava/lighthouse 0.2.0时index.js路径错误问题排查

Laravel集成dzava/lighthouse 0.2.0时index.js路径错误问题排查

我之前也碰到过dzava/lighthouse和新版Lighthouse CLI目录结构不兼容的问题,你的情况核心原因是dzava/lighthouse 0.2.0默认使用的Lighthouse路径还是旧版本的lighthouse-cli目录,但你安装的Lighthouse已经把CLI目录改成了cli,所以才会一直报找不到文件的错误。

下面给你几个亲测有效的解决思路:

1. 修正setLighthousePath的正确路径

根据你描述的目录结构(node_modules/lighthouse/cli/index.js),结合Laravel项目的目录层级(你的代码在app/Models/Account.php),最可靠的写法是用Laravel的base_path()辅助函数,它会直接指向项目根目录,避免手动计算相对路径出错:

->setLighthousePath(base_path('node_modules/lighthouse/cli/index.js'))

不管你的代码文件放在哪个子目录下,这个路径都能准确找到目标文件。

2. 匹配兼容的Lighthouse版本

dzava/lighthouse 0.2.0发布时间较早,和最新版Lighthouse的目录结构不兼容。你可以尝试安装和这个包适配的旧版Lighthouse,比如v8.x版本(这个版本还保留lighthouse-cli目录):

yarn add lighthouse@8.6.0 --dev

安装完成后,原来的路径./../../node_modules/lighthouse/lighthouse-cli/index.js就能正常工作了。

3. 确认文件执行权限

有时候即使路径正确,也可能因为文件没有执行权限导致报错。你可以给index.js添加执行权限试试:

chmod +x node_modules/lighthouse/cli/index.js

另外你问到的“为什么它默认假设路径是./node_modules/lighthouse/lighthouse-cli/index.js”,是因为dzava/lighthouse 0.2.0的源码里硬编码的默认路径就是这个旧的目录结构,而后续Lighthouse官方重构了目录,把lighthouse-cli改成了cli,才出现了路径不匹配的问题。

我自己在Laravel 8+环境中用dzava/lighthouse 0.2.0搭配Lighthouse v8.6.0是可以正常运行的,你可以根据自己的需求选择上面的方案。

备注:内容来源于stack exchange,提问作者ThurstonLevi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:08:03