Выходной порт 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 все было исправлено.
(Это, вероятно, не идеальное / окончательное решение для случая, но исправили проблему для нашей текущей настройки)