Выходной порт Elm не работает с сигналом, полученным из StartApp

Мы изучаем основы Elm и создаем простое приложение с некоторыми аудиовыходами со следующей настройкой:

  • Мы используем Elm StartApp.
  • У нас есть ports/audio.js с некоторой звуковой логикой POC (и console.log).
  • Банкомат мы используем elm-live для запуска приложения.

С помощью сигнала, полученного из Time.every, порт работает (выполняется код в ports/audio.js). Кроме того, мы получаем логи "ping" с Debug.log.

port audio : Signal Int
port audio =
  Signal.map (always 400) (Time.every Time.second)
  |> Signal.map (Debug.log "ping")

Однако, когда мы используем сигнал, полученный из App.model приложения StartApp, мы получаем сигнал (так как журналы "ping" с Debug.log регистрируются), но порт на JS не работает (код в ports/audio.js не запускается)?

port audio : Signal Int
port audio =
  Signal.map (always 400) signalDerivedFromStartApp
  |> Signal.map (Debug.log "ping")

Это может быть какая-то базовая вещь, связанная с сигналами / портами Elm /StartApp?

1 ответ

Решение

Наш эксперт-друг обнаружил проблему: наша установка была нарушена, так как мы использовали Elm.main в двух местах

  • порты /audio.js имели Elm.worker(Elm.Main, {});
  • index.html имел скрипт с Elm.fullscreen(Elm.Main)

-> после удаления вещей Elm.worker из audio.js и подключения audio.js к реализации порта в index.html все было исправлено.

(Это, вероятно, не идеальное / окончательное решение для случая, но исправили проблему для нашей текущей настройки)

Другие вопросы по тегам