Fay: включить другой файл Fay?
У меня есть один файл Fay, который является сердцем моей программы, однако мне нужны некоторые помощники для моей логики, например, метод для замены подстрок. Из того, что я понимаю, если мне нужны такие методы, которые предлагаются многими библиотеками Haskell непосредственно из Hackage, я не могу использовать эти библиотеки 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");
});
Но, несмотря на это, я все еще получаю ошибку. Я попытался скомпилировать Utils.hs с "--library", но это не помогло.
Таким образом, мой вопрос: в какой настройке мне нужно добиться, чтобы сгенерированный JS нашел вспомогательные функции, которые я поместил в другой файл HS, зная, что во время компиляции Fay (очевидно) находит их без проблем? Есть ли пример такой настройки онлайн? Я обнаружил, что большинство использованных мной файлов Fay содержат весь код в одном файле HS, хотя они часто используют внешний код Fay из cabal, как в случае с fay-jquery. В моем случае, создание кабального проекта только для этих простых помощников было бы излишним.
1 ответ
Какую версию Fay вы используете (fay --version
)? Кажется, вы используете версию старше 0.16, где забыли import Prelude
не дал бы никаких предупреждений, см. этот закрытый билет. Так что обнови фэй и / или добавь import Prelude
,
Мы также рассматриваем переименование операторов в производимом выводе, чтобы облегчить понимание таких сообщений об ошибках.
Вам не нужно вызывать fay несколько раз, fay выводит все зависимости в один и тот же файл js. Так что в этом отношении нет никакой разницы от использования кабала.
Надеюсь, это поможет, иначе, пожалуйста, дайте мне способ воспроизвести это.