首页 > 解决方案 > HHClient 为 HSL 中的函数抛出未绑定名称错误

问题描述

我对hacklang很陌生。我有一段代码(从 HSL github 页面复制)

use namespace HH\Lib\{Vec,Dict,Keyset,Str,Math};


function main(vec<?int> $foo): vec<string> {
  return $foo
    |> Vec\filter_nulls($$)
    |> Vec\map($$, $it ==> (string) $it);
}

文件名:abc.hack 我的 composer.json 看起来像

{
    "require": {
        "hhvm/hhvm-autoload": "^3.1",
        "hhvm/hsl": "^4.41"
    },
    "require-dev": {
        "hhvm/hhast": "^4.64",
        "hhvm/hacktest": "^2.2",
        "facebook/fbexpect": "^2.7"
    }
}

我已经包括 hsl 。我在这里做错了什么?我也用其他 HSL 函数进行了测试,看起来 hh_client 无法检测到 HSL 函数并抛出Unbound name (typing): HH\Lib\Vec\filter_nulls 之类的错误。

标签: phphacklang

解决方案


正如评论中所讨论的,ignored_paths: ["vendor/*"]ignored_paths作为 hhconfig 选项自 3.23 起可用)阻止类型检查器了解 OP 的 HSL。一般来说,抑制错误vendor并不简单,需要进行一些研究才能将必要的定义暴露给类型检查器。


推荐阅读