Я пытаюсь отправить данные из Elm 0.19 в JavaScript, используя порты.
Редактировать : Кажется, проблема связана с запуском / сборкой с elm-app
В Elm я объявляю исходящий порт:
port modelToJs : Json.Encode.Value -> Cmd msg
, который я использую в функции update
для создания Cmd
, который отправляет JSON-кодированное значение в JavaScript.
В JS я создаю экземпляр приложения Elm:
const app = Elm.Main.init({
node: document.getElementById('root')
});
и регистрирую обработчик данных:
app.ports.modelToJs.subscribe(function dataHandler(data) {
console.log("got from Elm:" + data);
});
Когда вызывается modelToJs
, данные не отправляютсяи распечатывается на консоли.Вместо этого я получаю следующую ошибку во время выполнения JavasScript (которую Элм утверждает, что ее намеренно избегают):
TypeError: currentSubs[i] is not a function
var value = _Json_unwrap(converter(cmdList.a));
2160 | for (var i = 0; i < currentSubs.length; i++)
2161 | {
> 2162 | currentSubs[i](value);
2163 | }
2164 | }
2165 | return init;
Я также предоставил полное подтверждение концепции проекта на GitHub: https://github.com/mpgirro/elm0.19-ports-issue
Репозиторий также содержит изображение сообщения об ошибке (извините, мне не хватает репутации для публикации изображений)