Использование портов с приложением elm

Я пытаюсь использовать порты с elm-app. Ранее я использовал elm-live и установка ванили, и был в состоянии вставить порты, как это:

index.html

<body>
    <noscript>
        You need to enable JavaScript to run this app.
    </noscript>
    <div id="root"></div>
    <script>
      window.addEventListener("load", function(event) {

        var app = Elm.Main.fullscreen(localStorage.session || null);

        app.ports.storeSession.subscribe(function(session) {
          localStorage.session = session;
        });
        ...

Это сработало, и вязов-живое, казалось, встраивать elm.js в <head> index.html.

Когда я пытаюсь использовать эту настройку для портов с create-elm-appоднако скомпилированный javascript встроен внизу <body>так что добавление <script> как я сделал результаты в этом:

(index):68 Uncaught ReferenceError: Elm is not defined
    at (index):68

Каков наилучший способ встраивания портов JS?

1 ответ

Решение

halfzebra/create-elm-app Проект настраивает вещи немного по-другому. Вам придется изменить src/index.js файл, как показано в примере в документации по Javascript Interop

import './main.css';
import { Main } from './Main.elm';
import registerServiceWorker from './registerServiceWorker';

var app = Main.embed(document.getElementById('root'));

registerServiceWorker();

// ports related code
app.ports.windowTitle.subscribe(function(newTitle){
    window.document.title = newTitle;
});
Другие вопросы по тегам