我有一个Fay文件,这是我的程序的核心,但是我需要一些帮助我的逻辑,例如替换子串的方法。根据我的理解,如果我需要直接从Hackage的许多Haskell库提供的这些方法,我不能使用那些Haskell库,但我必须在我的项目中复制粘贴代码。这就是我所做的,我在项目的一个新文件中将一个“替换”函数和MissingH库中的其他助手一起复制粘贴:Utils.hs。
那个Utils.hs编译没有问题与Fay。我也在我的主Fay文件中导入它,我得到主文件文件的JS文件没有问题。但是在运行时我收到以下错误:
ReferenceError: Utils$$36$ is not defined
我不认为Fay会在我的主JS文件中包含辅助文件中的代码,所以我在加载HTML中包含了两个JS文件。并且为了更加确定当我加载主文件时,加载了utils文件,我加载它:
$.getScript("Utils.js", function(){
$.getScript("FayConfig.js");
});
但尽管如此,我仍然得到错误。我尝试使用“--library”编译Utils.hs,但它没有帮助。
所以我的问题是,我需要实现哪个设置,生成的JS将找到我放在另一个HS文件中的辅助函数,知道在编译时,Fay(显然)发现它们没有问题?有这样的在线设置的例子吗?我发现的大部分Fay用途都包含单个HS文件中的所有代码,尽管它们经常使用来自cabal的外部Fay代码,就像使用fay-jquery一样。在我的情况下,为这些简单的帮助者设置一个阴谋集团项目将是过度的。
答案 0 :(得分:0)
您使用的是哪个版本的Fay(fay --version
)?好像你使用的是旧版本
0.16忘记import Prelude
不会发出任何警告,请参阅this closed ticket。所以升级fay和/或添加import Prelude
。
我们还在考虑在生成的输出中重命名运算符,以使这些错误消息更容易理解。
你不需要多次调用fay,fay会将所有依赖项输出到同一个js文件中。因此,在这方面使用cabal包没有区别。
希望这会有所帮助,否则请给我一种方法来重现这一点。