使用Elm 0.19中的端口时,'TypeError:currentSubs [i]不是函数'

问题描述 投票:0回答:1

我试图使用端口将数据从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运行时错误(Elm声称要避免设计):

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

回购还包含错误消息的图像(sry,我缺乏发布图像的声誉)

elm
1个回答
2
投票

该错误似乎在dataHandler.js。它目前包含这个:

function dataHandler(data) {
    console.log("got from Elm:" + data);
}

如果你将函数声明为export default,问题就会消失:

export default function dataHandler(data) {
    console.log("got from Elm:" + data);
}
© www.soinside.com 2019 - 2024. All rights reserved.