1

我有一个 Fay 文件,它是我的程序的核心,但是我需要一些帮助来实现我的逻辑,例如替换子字符串的方法。据我了解,如果我需要Hackage的许多Haskell库直接提供的方法,我不能使用那些Haskell库,但我必须将代码复制粘贴到我的项目中。所以这就是我所做的,我将“替换”函数与 MissingH 库中的其他助手一起复制粘贴到我项目的一个新文件中:Utils.hs。

Utils.hs 在 Fay 编译时没有问题。此外,我将它导入到我的主 Fay 文件中,并且我得到了一个主项目文件的 JS 文件,没有问题。但是在运行时我收到以下错误:

ReferenceError: Utils$$36$ is not defined

我认为 Fay 不会在我的主 JS 文件中包含辅助文件中的代码,因此我将两个 JS 文件都包含在加载 HTML 中。为了更加确定当我加载主文件时,utils文件被加载,我像这样加载它:

$.getScript("Utils.js", function(){
    $.getScript("FayConfig.js");
});

但尽管如此,我仍然得到错误。我尝试使用“--library”编译 Utils.hs,但没有帮助。

所以我的问题是,我需要哪种设置来实现生成的 JS 将找到我放在另一个 HS 文件中的辅助函数,知道在编译时,Fay(显然)可以毫无问题地找到它们?网上有这种设置的例子吗?我发现的大多数 Fay 使用都将所有代码都放在一个 HS 文件中,尽管它们经常使用来自 cabal 的外部 Fay 代码,例如 fay-jquery。就我而言,仅仅为这些简单的助手建立一个阴谋集团项目将是矫枉过正。

4

1 回答 1

0

您使用的是哪个版本的 Fay ( fay --version)?似乎您使用的是早于 0.16 的版本,忘记import Prelude不会给出任何警告,请参阅此已关闭的票证。所以升级 fay 和/或添加import Prelude.

我们还考虑在生成的输出中重命名运算符,以使此类错误消息更易于理解。

不需要多次调用 fay,fay 将所有依赖输出到同一个 js 文件中。所以在这方面与使用 cabal 包没有区别。

希望这会有所帮助,否则请给我一种重现此问题的方法。

于 2013-08-24T22:24:30.113 回答